c-在GDB中查找函数的返回值



我对使用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((

最新更新