我对使用gdb非常陌生,对C编程也非常陌生。我正在执行的函数中有一行代码:
append(MACRO, F1());
append只是一个append字符串函数。我想知道如何找到函数F1((的值。我该怎么做呢。我试着展示,但后来意识到它并没有给我正确的答案。使用显示器F1的输出为:
{<文本变量,无调试信息>}0x4037bc
第一个break F1
,继续运行直到F1中断,然后执行finish
,然后$rax(或$eax(是F1 的返回值
例如:
char *F1() {
return "1234";
}
(gdb) break F1
Breakpoint 1 at 0x1151
(gdb) c
Breakpoint 1, 0x0000555555555151 in F1 ()
(gdb) fin
Run till exit from #0 0x0000555555555151 in F1 ()
0x00005555555551a2 in main ()
(gdb) p (char*)$rax
$1 = 0x555555556004 "1234"
(gdb) quit
要打印值,需要先将其强制转换为整数。例如,打印(int(F1((