Czy mamy sposób, aby wyświetlić kod assemblera i c zarówno przy użyciu gdb.Zobacz zarówno Assembly and C code
disassemble nazwa_funkcji pokazuje tylko zespół, próbowałem znaleźć sposób łatwego mapowania kodu c do montażu. Dzięki
Czy mamy sposób, aby wyświetlić kod assemblera i c zarówno przy użyciu gdb.Zobacz zarówno Assembly and C code
disassemble nazwa_funkcji pokazuje tylko zespół, próbowałem znaleźć sposób łatwego mapowania kodu c do montażu. Dzięki
można uruchomić gdb w tekst interfejsu użytkownika tryb (TUI):
gdb -tui <your-binary>
(gdb) b main
(gdb) r
(gdb) layout split
Komenda layout split
dzieli okno na dwie części - jedna z nich wyświetlanie kodu źródłowego, drugi z odpowiedni montaż. kilka innych sztuczek:
Jeśli nie chcesz używać trybu TUI (np. terminal nie podoba), zawsze można zrobić:
x /12i $pc
co oznacza drukowania 12 instrukcji z programu aktualny adres licznika - to również działa z powyższych sztuczki (demangling, wchodząc instrukcje, itp).
Sztuczka "x/12i $ pc" działa zarówno w gdb, jak i cgdb, natomiast "podział układu" działa tylko w gdb.
Enjoy :)
Spróbuj disassemble /m
.
Patrz http://sourceware.org/gdb/current/onlinedocs/gdb/Machine-Code.html#Machine-Code
format jest podobny do tego z objdump -S
i intermixes źródło z demontażu. Przykładowe wyjście fragment:
10 int i = 0;
=> 0x0000000000400536 <+9>: movl $0x0,-0x14(%rbp)
11 while (1) {
12 i++;
0x000000000040053d <+16>: addl $0x1,-0x14(%rbp)
Nie chciałem innych rozwiązań, ponieważ nie chcę ponownie uruchamiać gdb i ustawić go ponownie w ten sam sposób, a odwołania do plików .o do przeniesionych sekcji utrudniają zrozumienie. Więc pomyślałem, że to tylko bilet.Jakież było moje przerażenie, a potem, kiedy w końcu zrozumiał, że demontażu/m dyskretnie pomija kilka wskazówek, jak po pierwszym, instrukcja trzech bajtów: '0x000000000442f038 <+24>: \t mov% RSI,% rbx 0x000000000442f043 <+35>: \t sub $ 0x38, % rsp' To jest 'GNU gdb (GDB) 7.4.1-debian'. –
Dla celów, spróbuj
objdump -S <your_object_file>
od człowieka objdump:
-S
--source
Display source code intermixed with disassembly, if possible.
Implies -d.
Czy istnieje jakiś sposób, aby również pozbyć górnym oknie podzielonym? To niepotrzebne i zajmuje miejsce. –
@BabkenVardanyan Spróbuj 'layout next'. Jeśli nie daje pożądanego układu, wypróbuj to polecenie jeszcze kilka razy. To polecenie przełącza między układami, dzięki czemu możesz zachować to, co chcesz. –