我正在尝试在可执行文件使用的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. 如何使用fscanf读取c中的文件(分段错误)?
- 3. 如何在特定情况下处理GDB的分段错误?
- 4. 如何使用boost库查找所有.exe文件?
- 5. gdb检测到分段错误。如何查明确切的来源?
- 6. 可以在gdb中运行,直接运行时分段错误
- 7. 如何使用gdb在g ++代码中查找浮点异常
- 8. C:分段错误:GDB:<错误读取变量>
- 9. GDB只显示发生错误(分段错误)
- 10. 如何在QML文件中查找语法错误?
- 11. 在Fortran中导入.mat文件 - 分段错误错误
- 12. stl_vector.h头文件中的分段错误
- 13. 文件I/O中的分段错误
- 14. 文件访问中的分段错误
- 15. 如何在PHP中使用Simplexml分析错误的XML文件?
- 16. 如何在C代码中找到分段错误?
- 17. 如何在EXE中查找PE部分和IL代码?
- 18. 在Javascript中查找分析错误
- 19. 在C中使用Do [查找错误]
- 20. 查找文件中的错误
- 21. 如何在ajax中查找错误
- 22. 仅在GDB调试期间出现分段错误
- 23. 附加到运行过程中的iPhone GDB分段错误
- 24. 在gdb中查找对象的引用?
- 25. 错误作曲℃〜(窗口)exe文件在Linux上使用MinGW
- 26. 如何在用户运行EXE文件时覆盖EXE文件?
- 27. 如何使用GDB分析故障转储文件
- 28. 查找文本在一个GDB登录
- 29. GDB BT错误:从核心文件
- 30. 使用javascript查找exe文件的绝对路径
您是否真的在整个网页上找不到有关使用gdb进行调试的问题? – kaylum
@kaylum这就像战士俱乐部 - 找到你需要的东西,你应该知道你需要什么。而现代搜索引擎对新话题不利。他们试图通过相关性推动新事物的发展。好的指导https://beej.us/guide/bggdb/ – Swift
我找不到任何东西。从Swift给我的链接中,我想我正在针对我的搜索查询进行特定搜索,并且没有足够的搜索范围。 – user3304124