回答
看起來你需要從基礎開始..!
用-g標誌編譯你的應用程序代碼,確保你不要去掉它。
說,如果我想編譯的hello.c
gcc -c -g hello.c -o hello.o
gcc hello.o -o hello
現在如果你不想調試
ulimit -c unlimited
./hello
當應用程序崩潰wiil生成一個核心文件。
要檢查覈心文件
"gdb ./hello core.$$$" this will list you your stack.
,你也可以選擇調試圖像 GDB你好
有超過約GDB互聯網了很多東西,也通過他們去。
是的,剛上去,通過回溯到主,你可以做'打印argc','x/4s * argv'或任何你想要的。 – user786653
是的,如果應用程序編譯與調試信息。在gdb中打開core dump並找到包含main函數的框架。然後轉到此框並輸出argv和argc的值。這裏是示例gdb會話。
[[email protected] ~]# gdb ./a.out core.2020
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/a.out...done.
[New Thread 2020]
warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libstdc++.so.6
Reading symbols from /lib/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./a.out'.
Program terminated with signal 6, Aborted.
#0 0x0027b424 in __kernel_vsyscall()
(gdb) bt
#0 0x0027b424 in __kernel_vsyscall()
#1 0x00b28b91 in raise() from /lib/libc.so.6
#2 0x00b2a46a in abort() from /lib/libc.so.6
#3 0x007d3397 in __gnu_cxx::__verbose_terminate_handler()() from /usr/lib/libstdc++.so.6
#4 0x007d1226 in ??() from /usr/lib/libstdc++.so.6
#5 0x007d1263 in std::terminate()() from /usr/lib/libstdc++.so.6
#6 0x007d13a2 in __cxa_throw() from /usr/lib/libstdc++.so.6
#7 0x08048940 in main (argv=1, argc=0xbfcf1754) at test.cpp:14
(gdb) f 7
#7 0x08048940 in main (argv=1, argc=0xbfcf1754) at test.cpp:14
14 throw std::runtime_error("123");
(gdb) p argv
$1 = 1
(gdb) p argc
$2 = (char **) 0xbfcf1754
(gdb)
也可以爲非調試版本恢復argc和argv。如果這是OP真正需要的,我可以寫出來。 –
@僱用俄語:我會有興趣知道!我有一個非調試核心轉儲,我想看看argv。 – misterbee
@misterbee問這個問題,我會回答;-)請注意,答案是架構特定的,所以一定要說'x86_64',或'i686',或其他什麼。 –
- 1. 從核心轉儲崩潰中恢復
- 2. 開啓核心/崩潰轉儲編程
- 3. GDB +核心文件轉儲
- 4. 進程核心轉儲不會在崩潰後創建
- 5. Erlang:如何禁用「崩潰轉儲」和「核心轉儲」生成?
- 6. 從後臺恢復後訪問核心數據NSManagedObject崩潰應用程序
- 7. 使用gdb分析核心轉儲幀
- 8. gdb調試遠程核心轉儲
- 9. Eclipse CDT/GDB - 開放核心轉儲?
- 10. GDB不給理由核心轉儲
- 11. argc argv問題
- 12. 崩潰時創建IBM JVM Java核心轉儲
- 13. GDB不斷崩潰
- 14. Elasticsearch在崩潰後無法恢復
- 15. 活動恢復後Android SoundBoard崩潰
- 16. 系統崩潰後恢復SSH會話
- 17. 核心數據崩潰
- 18. 崩潰與核心數據
- 19. 核心數據崩潰mergeChangesFromContextDidSaveNotification
- 20. iPhone - 核心數據崩潰
- 21. gdb查看核心轉儲中的結構值
- 22. CUDA-GDB在內核中崩潰
- 23. 構建argv和argc
- 24. 核心轉儲文件恢復程序的狀態
- 25. 「無法及時恢復」從後臺崩潰恢復
- 26. 核心數據,綁定,值轉換器:保存時崩潰
- 27. 核心轉儲?
- 28. 恢復崩潰的InputStream
- 29. eclipse從崩潰中恢復
- 30. 崩潰恢復Android應用
最簡單的方法就是別人做任何事情之前寫argc'的'和一些文件中的值'argv',如果你那麼在乎他們 –