Podczas kompilowania kodu źródłowego C za pomocą gcc lub Clang, zawsze używam -gflagi do generowania informacji debugowania dla gdb. gcc -g -o helloworld helloworld.c Zauważyłem, że niektórzy -g3zamiast tego polecają . Jaka jest różnica między flagami -gi -g3? Czy jest też różnica między -gi -ggdb?
Pracuję nad aplikacją wielowątkową i chcę ją debugować za pomocą GDB. Problem w tym, że jeden z moich wątków umiera wraz z komunikatem: pure virtual method called terminate called without an active exception Abort Znam przyczynę tej wiadomości, ale nie mam pojęcia, gdzie w moim wątku się pojawia. Ślad wsteczny …
Mam program, który pobiera dane wejściowe ze stdin, a także pobiera niektóre parametry z wiersza poleceń. To wygląda tak: cat input.txt > myprogram -path "/home/user/work" Próbuję debugować kod z gdb wewnątrz emacsa, przez Mx gdb, próbuję załadować program poleceniem: gdb cat input.txt > myprogram -path "/home/user/work" Jednak gdb tego nie …
Jestem nowy w GDB, więc mam kilka pytań: Jak mogę sprawdzić zawartość stosu? Przykład: aby zobaczyć zawartość rejestru, wpisuję info registers. Co to powinno być w przypadku stosu? Jak mogę zobaczyć zawartość $0x4(%esp)? Kiedy piszę print /d $0x4(%esp), GDB wyświetla błąd. Platforma: Linux i GDB
Obecnie, gdy drukuję wartość zmiennej vw GDB ( print v), otrzymuję liczbę całkowitą. Czy jest możliwe, aby GDB drukował takie zmienne całkowite w formacie szesnastkowym lub binarnym?
0x0000000000400448 <main+0>: push %rbp 0x0000000000400449 <main+1>: mov %rsp,%rbp 0x000000000040044c <main+4>: mov $0x6,%eax 0x0000000000400451 <main+9>: leaveq 0x0000000000400452 <main+10>: retq Próbowałem: breaki 0x0000000000400448 ale wydaje się, że nie ma takiego polecenia. Czy gdb ma taką funkcję?
Próbuję zautomatyzować sesję gdb za pomocą --commandflagi. Próbuję ustawić punkt przerwania funkcji w bibliotece współdzielonej (odpowiednik biblioteki DLL w systemie Unix). Mój cmds.gdb wygląda następująco: set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r Jednak otrzymuję następujące informacje: shlomi: ~ / progs / bugs-external / kde / font-breaking $ gdb --command = cmds.gdb …
Przypuśćmy, że mamy coś takiego: #include <map> int main(){ std::map<int,int> m; m[1] = 2; m[2] = 4; return 0; } Chciałbym móc sprawdzić zawartość mapy, na której działa program z gdb. Jeśli spróbuję użyć operatora indeksu dolnego, otrzymam: (gdb) p m[1] Attempt to take address of value not located in …
Chciałbym gdbnatychmiast uruchomić plik wykonywalny, tak jakbym napisał „run” (motywacja: nie lubię pisać „run”). Jednym ze sposobów jest potokowanie polecenia w gdbten sposób: $ echo run | gdb myApp Ale problem z tym podejściem polega na tym, że tracisz interaktywność z gdbnp. jeśli punkt przerwania wyzwala lub myAppulega awarii, gdbkończy …
Wciąż otrzymuję ten komunikat o błędzie podczas próby dodania punktu przerwania w gdb. Użyłem tych poleceń do kompilacji: gcc -g main.c utmpib2.c -o main.o and: cc -g main.c utmpib2.c -o main.o and also: g++ -g main.c utmpib2.c -o main.o Próbowałem też „-ggdb” zamiast „-g” i nadal otrzymuję ten komunikat o …
Kiedy używam gcc do kompilowania programów w C, zwykle używam -gdo pobierania informacji debugowania do pliku elf, aby gdb mógł mi pomóc w razie potrzeby. Jednak zauważyłem, że niektóre programy używają -ggdb, ponieważ ma to na celu uczynienie informacji debugowania bardziej przyjaznymi dla gdb. Czym się różnią i co jest …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.