【发布时间】:2011-09-30 12:03:50
【问题描述】:
我有一个 C 程序,其中 main 函数创建线程,我必须调试一个线程。我正在为他使用 gdb。但是,我不能在该程序的特定 C 文件上“破坏”或“监视”变量。例如。我的线程 6 已编程并使用某些 C 文件,我必须在 call_connect.c 上的第 601 行中断。这不可能吗?如果我尝试这样做,就会发生这种情况:
(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.
我还使用 -O0 -ggdb 调试了我的 C 代码,但我仍然无法查看变量。 这是我尝试读取 char *ptext 变量时得到的结果。
(gdb) print ptext
No symbol "ptext" in current context.
(gdb) watch ptext
No symbol "ptext" in current context.
有人可以帮忙吗?
【问题讨论】: