В общем, есть три вещи в указанном порядке:
По сути, выберите самое простое решение, которое будет работать для вас. Также взгляните на Qt Creator , он красиво оформлен и доступен весь исходный код .
Если GDB не имеет символов отладки для функции, которую вы пытаетесь отладить, GDB не сможет определить диапазон адресов памяти для дизассемблирования. Чтобы обойти это, вы можете передать диапазон в команду disassemble
. Например:
(gdb) p $pc
$4 = (void (*)()) 0x70c72d <_IO_puts+29>
(gdb) disassemble 0x70c72d 0x70c740
Dump of assembler code from 0x70c72d to 0x70c740:
0x0070c72d <_IO_puts+29>: mov %eax,(%esp)
0x0070c730 <_IO_puts+32>: call 0x721f10 <strlen>
0x0070c735 <_IO_puts+37>: mov 0x84c(%ebx),%edx
0x0070c73b <_IO_puts+43>: cmpw $0x0,(%edx)
0x0070c73f <_IO_puts+47>: mov %edx,-0x10(%ebp)
End of assembler dump.
Может быть способ установить символы отладки. В моей системе Ubuntu я установил пакет libc6-dbg
, который позволяет мне переходить к функциям стандартной библиотеки.