我有一個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'的源文件是什麼意思? –