就开源开发而言,我是一个新手。我已经在几个项目上尝试过我的手,但由于代码基数庞大,最终总是感到沮丧。如何使用gdb来剖析像字处理器这样的应用程序
我一直面临的一个特殊问题是无法确定大代码库的哪个部分处理特定的工作。说,如果我想知道哪部分代码在文字处理器中进行文本渲染和布局。
人们经常给出的建议是使用gdb来浏览程序。
所以我试图打开我的文字处理器(这是与调试标志编译)的文件,并得到一个回溯,但奇怪的是,我所获得的是一些普通的函数调用,其中没有涉及到打开文件。
这是我上执行gdb /usr/local/bin/abiword
(gdb) bt
0 0xffffe424 in __kernel_vsyscall()
1 0xb63b472b in poll() from /lib/libc.so.6
2 0xb66256eb in g_poll() from /usr/lib/libglib-2.0.so.0
3 0xb6616db6 in ??() from /usr/lib/libglib-2.0.so.0
4 0xb66174bb in g_main_loop_run() from /usr/lib/libglib-2.0.so.0
5 0xb6d6668d in gtk_main() from /usr/lib/libgtk-3.so.0
6 0xb7c04a4d in AP_UnixApp::main (szAppName=0x8048970 "abiword", argc=1,
argv=0xbffff704) at ap_UnixApp.cpp:1332
7 0x080488a3 in main (argc=1, argv=0xbffff704)
at ../src/wp/main/gtk/UnixMain.cpp:30
请建议GDB如何可以用于这种目的而获得的。对不起,如果我的问题听起来太不雅观,但我真的在这样一个任务的话丢失,所以谷歌也没有帮助。 :|
你不能随便选择一个程序,并运行一个调试器,期望找到一个说明“这部分处理文本的图形输出”或其他内容的可读代码。除非您在汇编代码和堆栈跟踪方面非常先进,否则至少需要调试符号,而使用调试信息和源代码的目标文件使事情变得更加容易。 – 2011-12-22 23:48:35
谢谢,但我确保使用调试信息编译程序。 – navgeet 2011-12-22 23:52:25
您可以编辑您的问题并添加该信息。 :) – 2011-12-23 00:12:41