如何使用gdb調試核心轉儲時設置斷點並使其中斷? 當我使用命令「gdb的程序核心」,該過程停止在崩潰點, 我怎麼能制止那裏之前使該進程中斷。 如果我不能讓它中斷,我可以在調試核心轉儲時在gdb中使用哪些命令?如何在使用gdb調試核心轉儲時設置斷點並使其中斷?
0
A
回答
2
如果要跟蹤導致崩潰的步驟,則可以在加載內核後重新啓動程序。使用「開始」,這會將您帶到程序的第一行。然後在main()和崩潰點之間設置斷點。 請參閱下面的示例:
<pre>
[[email protected] src]$ gdb -n -quiet myprogram core.12046
Reading symbols from </my/path/>...done.
[New Thread 12046]
Reading symbols from /usr/lib64/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libstdc++.so.6
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Core was generated by `./myprogram'.
Program terminated with signal 11, Segmentation fault.
#0 0x0000000000400658 in main() at stack.cpp:6
6 int b=*x;
(gdb) p x
$1 = (int *) 0x0
(gdb) l
1 #include <iostream>
2
3 int main(void)
4 {
5 int* x=NULL;
6 int b=*x;
7 return 0;
8 }
(gdb) start
No core file now.
Temporary breakpoint 1 at 0x40064c: file stack.cpp, line 5.
Starting program: /u03/narz/projects/xxxxx/xxxxx/src/myprogram
Temporary breakpoint 1, main() at stack.cpp:5
5 int* x=NULL;
(gdb)
</pre>
1
當您檢查覈心文件就可以了,例如列表中的堆棧跟蹤或視圖下執行函數參數:
gdb <program> <core>
(gdb) backtrace
(gdb) print <variable or *address>
如果你想設置斷點打開一個程序使用gdb沒有核心文件,這樣就可以運行它:
gdb <program>
(gdb) break <line>
(gdb) run
相關問題
- 1. gdb調試遠程核心轉儲
- 2. 如何使用共享庫函數在gdb中設置斷點
- 3. 在emacs(或DDD)中使用gdb時無法設置斷點
- 4. 如何在eclipse中的Java核心類中設置斷點?
- 5. 如何在運算符<上使用GDB設置斷點?
- 6. GDB無法設置斷點
- 7. 使用gdb分析核心轉儲幀
- 8. 使用Ruby-Debug調試/斷點Rails核心?
- 9. 設置malloc_error_break斷點調試
- 10. 在C文件中設置GDB斷點
- 11. 內核調試:GDB不能設置斷點並沒有SIGINT的效果帶回在調試會話
- 12. 使用GDB的斷點
- 13. 如何在使用GDB生成核心轉儲文件時限制核心轉儲文件的大小
- 14. 如何跳轉到gdb中的斷點?
- 15. 如何使用JavaScript調試斷點WebStorm
- 16. 爲什麼我的gdb調試器設置了2個斷點?
- 17. 如何在使用NetBeans遠程調試器時設置行斷點?
- 18. GDB +核心文件轉儲
- 19. Xcode 4.3-4.4使用LLDB使用斷點崩潰,使用GDB時斷點無效
- 20. 核心轉儲文件名截斷
- 21. gdb掛鉤設置中斷
- 22. 如何使Visual Studio調試器在設置爲運行宏並繼續的數據斷點處停止中斷?
- 23. 如何在Nunit測試中設置斷點並逐步使用Visual WebDeveloper 2008?
- 24. 使用Perl的Tk調試器,如何在我的Perl庫中設置斷點?
- 25. 如何在專用接口方法上設置gdb斷點
- 26. 如何在gdb中爲C++設置operator()的斷點?
- 27. gdb:如何在帶空格的文件中設置斷點
- 28. 在Android設備上進行調試時,無法再設置/使用斷點
- 29. 設置使用gdb斷點時相同的源文件被多次使用
- 30. 如何在混合(C#/ C++)調試中設置數據斷點?
調試核心時,您沒有運行該程序,因此沒有斷點。如果你問如何調試GDB,請澄清。 –