Discussion:
zrzut pamięci w programie w C++
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
RM
2020-04-21 17:05:11 UTC
Permalink
Napisałem program w C++. Uruchomiony pod VSCode z debuggerem działa
poprawnie, natomiast po kompilacji i uruchomieniu z wiersza poleceń
Linuxa dostaję: 5258 Przerwane (zrzut pamięci)
Co mam zrobić żeby znaleźć błąd w moim programie?
g***@gmail.com
2020-04-21 19:01:32 UTC
Permalink
Post by RM
Napisałem program w C++. Uruchomiony pod VSCode z debuggerem działa
poprawnie, natomiast po kompilacji i uruchomieniu z wiersza poleceń
Linuxa dostaję: 5258 Przerwane (zrzut pamięci)
Co mam zrobić żeby znaleźć błąd w moim programie?
Jeżeli błąd jest systematyczny i odpalasz go z linii komend, to wystarczy, że odpalisz w gdb, tzn. zamiast

$ ./program

napiszesz

$ gdb ./program

i po załadowaniu zrobisz "run". W momencie, gdy się wypierdzieli, będziesz mógł zrobić ,bt (czyli backtrace).

Możesz też załadować plik zrzutu pamięci do gdb (z tego co pamiętam, nazywa się "core", ale żeby powstał, być musisz najpierw wywołać "ulimit -s unlimited" czy coś takiego - bo na niektórych systemach ten plik "core" w ogóle nie powstaje).

W tej chwili nie pamiętam, jak to się robi, ale jak poguglasz, to pewnie łatwo znajdziesz.
Queequeg
2020-05-12 14:40:02 UTC
Permalink
Post by g***@gmail.com
Możesz też załadować plik zrzutu pamięci do gdb (z tego co pamiętam,
nazywa się "core", ale żeby powstał, być musisz najpierw wywołać "ulimit
-s unlimited" czy coś takiego - bo na niektórych systemach ten plik
"core" w ogóle nie powstaje).
ulimit -c unlimited

A program skompilować z -O0 -g.
--

Loading...