我有一个C程序,其中主函数创建线程,我必须调试一个线程。我正在使用gdb。但是我不能在这个程序的特定C文件上“破解”或“监视”变量。例如。我的线程6被编程并使用某些C文件,并且我必须在601行上说call_connect.c。这不可能吗?如果我尝试,这是发生了什么:GDB与pthreads
(gdb) info threads
6 Thread 0xb5c96b70 (LWP 3608) 0xb7fe1424 in __kernel_vsyscall()
5 Thread 0xb6497b70 (LWP 3607) 0xb7fe1424 in __kernel_vsyscall()
4 Thread 0xb6c98b70 (LWP 3606) 0xb7fe1424 in __kernel_vsyscall()
3 Thread 0xb7499b70 (LWP 3605) 0xb7fe1424 in __kernel_vsyscall()
2 Thread 0xb7c9ab70 (LWP 3604) 0xb7fe1424 in __kernel_vsyscall()
* 1 Thread 0xb7c9b6c0 (LWP 3603) 0x0804a178 in main()
(gdb) break 601 thread 6
No line 601 in file "events.c".
(gdb) break call_connect.c:601 thread 6
No source file named call_connect.c.
而且我调试我的C代码-O0 -ggdb和我仍然无法观察变量。 这是我在阅读char * ptext变量时得到的结果。
(gdb) print ptext
No symbol "ptext" in current context.
(gdb) watch ptext
No symbol "ptext" in current context.
有人可以帮忙吗?
当然,'gdb'会告诉你,一旦你装载了二进制文件,它是否找不到调试符号......?这不是一种快速验证二进制文件是否包含调试符号的方法吗? –
GDB * *会正确地告诉你。你觉得'没有名为call_connect.c'的源文件是什么意思? –