【发布时间】:2013-05-08 16:21:08
【问题描述】:
我正在尝试开发一个简单的基于文本的用户界面,它可以运行一些 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”仍然不起作用
谢谢!
【问题讨论】: