Я отлаживаю разделенную программу, используя gdb
.загрузить фальшивый отладочный символ в gdb при отладке разделенной программы
(gdb) bt
#0 0x00007fffcb443650 in fooSnprintf() from ./install.so.1
Я знаю, что третий аргумент является формат жало:
(gdb) print (char*)$rdx
$9 = 0x7fffe8dd4050 "%u %s"
Как мне сделать GDB показать функцию арг в точке прерывания остановки, как это делает, когда реальные символы отладки загружается?
Breakpoint 1, fooSnprintf (a=0, b=0, fmt=0x40060a "%u %s") at test.c:3
Я знаю о hook-stop
, но это глобальное и вызовет любую точку останова.
Это работает, но неудобно:
define hook-stop
if $rip == fooSnprintf
print (char*)$rdx
end
end
Является ли программа, которую вы попытаетесь отладить свою собственную программу или программа третьей стороны? Нет ли способа получить незасеянную версию программы? Или ядро? Если у вас есть дамп ядра, вы можете скопировать его и отладить программу локально, используя незанятый исполняемый файл. –
@JoachimPileborg Я бы не спросил, могу ли я сделать это – basin