我正在尝试开发一个简单的基于文本的用户界面,它运行一些 gdb 命令。我希望用户能够在代码的某个区域设置和中断/跟踪点并运行一些调试命令。
我想让用户输入需要调试的功能。然后我取这个函数名并打印出函数的源代码,然后让用户选择在哪一行代码设置断点/跟踪点。目前,使用反汇编命令我可以打印出用户的内存地址,但我想打印实际的源代码。
这可以在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
然后我尝试指定linenum:
(gdb) list directory/directory_etc/sourcefile.c:941
936 in directory/directory_etc/sourcefile.c
所以行为类似于你所描述的,但“列表文件名:linenum”仍然不起作用
谢谢!