我正在嘗試在可執行文件使用的c文件中發現分段錯誤,但未找到任何線索。有誰知道如何做到這一點?如何使用gdb在.exe文件中查找分段錯誤
-4
A
回答
0
運行gdb並從gdb運行你的程序,然後使用回溯。你會得到堆棧框架,你可以通過fram命令來查看堆棧框架,並使用print來檢查變量的值。通過互聯網檢查gdb tips \ docs。您可以使用gdb加載已崩潰的程序生成的已存在的核心文件,以查找發生問題的位置。加載的核心文件等於崩潰點的狀態,您只需使用backtrace。
回答你的問題在這裏:Determine the line of C code that causes a segmentation fault?
2
下面是一個簡單的程序,肯定會導致段故障:
包括
int main() {
int *pVal = NULL;
printf("ptr value is : %d", *pVal);
return 0;
}
您需要在調試模式下進行編譯,以在可執行文件中添加額外的調試信息:
gcc -g segFault.c
然後,您只需運行gdb併爲其指定可執行文件路徑(即本例中爲a.out)。然後通過運行它可以看到gdb突出顯示導致分段錯誤的行。
~/Dropbox/cprog/demos : $ gdb a.out
GNU gdb (GDB) 7.12
Copyright (C) 2016 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 "x86_64-apple-darwin15.6.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...Reading symbols from /Users/rohankumar/Dropbox/cprog/demos/a.out.dSYM/Contents/Resources/DWARF/a.out...done.
done.
(gdb) run
Starting program: /Users/rohankumar/Dropbox/cprog/demos/a.out
Program received signal SIGSEGV, Segmentation fault.
0x0000000100000f62 in main() at segFault.c:6
6 printf("ptr value is : %d", *pVal);
您還可以打印值並查看程序的堆棧跟蹤。你可以閱讀更多關於gdb here。
快樂編碼!
+0
有* nix Dropbox?整齊! – Swift
相關問題
- 1. 我如何找到分段錯誤使用GDB
- 2. 解釋GDB分段錯誤
- 3. Solr錯誤「在NRTCachingDirectory中找不到任何分段*文件」
- 4. 如何使用fscanf讀取c中的文件(分段錯誤)?
- 5. 如何查找使用gdb定義的文件?
- 6. 如何在特定情況下處理GDB的分段錯誤?
- 7. gdb報告分段錯誤 - 如何知道在哪裏?
- 8. 如何使用boost庫查找所有.exe文件?
- 9. 分割錯誤:gdb
- 10. 在C++中使用文件時出現分段錯誤
- 11. 如何使用gdb重新運行程序,直至出現分段錯誤?
- 12. gdb檢測到分段錯誤。如何查明確切的來源?
- 13. 如何使用gdb在g ++代碼中查找浮點異常
- 14. 可以在gdb中運行,直接運行時分段錯誤
- 15. 爲什麼分段錯誤在gdb中不可重現?
- 16. C:分段錯誤:GDB:<錯誤讀取變量>
- 17. GDB只顯示發生錯誤(分段錯誤)
- 18. 如何在QML文件中查找語法錯誤?
- 19. 如何在PHP中使用Simplexml分析錯誤的XML文件?
- 20. 在Fortran中導入.mat文件 - 分段錯誤錯誤
- 21. 文件I/O中的分段錯誤
- 22. stl_vector.h頭文件中的分段錯誤
- 23. 文件訪問中的分段錯誤
- 24. 如何在EXE中查找PE部分和IL代碼?
- 25. 如何在C代碼中找到分段錯誤?
- 26. 在Javascript中查找分析錯誤
- 27. 在C中使用Do [查找錯誤]
- 28. 查找文件中的錯誤
- 29. 我正在使用gdb調試程序,我得到一個分段錯誤
- 30. 如何在ajax中查找錯誤
您是否真的在整個網頁上找不到有關使用gdb進行調試的問題? – kaylum
@kaylum這就像戰士俱樂部 - 找到你需要的東西,你應該知道你需要什麼。而現代搜索引擎對新話題不利。他們試圖通過相關性推動新事物的發展。好的指導https://beej.us/guide/bggdb/ – Swift
我找不到任何東西。從Swift給我的鏈接中,我想我正在針對我的搜索查詢進行特定搜索,並且沒有足夠的搜索範圍。 – user3304124