我试图开发一个简单的基于文本的用户界面来运行一些 gdb 命令。我希望用户能够在代码的特定区域设置和打断点,并运行一些调试命令。
我想让用户输入需要调试的函数名称。然后,我将获取这个函数名称并打印出函数的源代码,然后要求用户选择要设置断点/跟踪点的代码行。目前,使用 disassemble 命令,我可以为用户打印出内存地址,但我希望打印实际的源代码。
在gdb中是否能够实现这一点?
当前的情况:
Dump of assembler code for function test_function:
0x03800f70 <test_function+0>: push %ebp
0x03800f71 <test_function+1>: mov %esp,%ebp
0x03800f73 <test_function+3>: sub $0x48,%esp
我要的是:
void main()
{
printf("Hello World\n");
}
谢谢!
编辑: 我得到了这个:
(gdb) list myFunction
941 directory/directory_etc/sourcefile.c: No such file or directory.
in directory/directory_etc/sourcefile.c
然后我尝试指定行号:
(gdb) list directory/directory_etc/sourcefile.c:941
936 in directory/directory_etc/sourcefile.c
所以行为与您描述的类似,但“list filename:linenum”仍然不起作用。
谢谢!