linux - 段错误 - 如何调试?

标签 linux debugging segmentation-fault

<分区>

我的应用程序崩溃了,它在控制台上打印了下面的内容:

sh[366]: /bin/sh: line 1: 367 Segmentation fault (core dumped) ./myapp

我的问题是这里的367是什么意思?

我无法在任何地方找到核心转储文件。
知道如何在这种情况下调试段错误吗?

最佳答案

367 是一个进程 ID(程序段错误的)。您可以在 gdb 调试器下运行您的程序。

阅读How To Debug Small Programs然后是 documentation of gdb .也考虑使用 valgrind .

any clue how do I debug the segmentation fault in such a scenario?

如果该错误可以重现,那就很容易了。在 gdb

下运行您的程序

I am not able to find the core dump file anywhere..

仔细阅读core(5) (和 getrlimit(2) ;也许核心转储已被禁用,例如某些 ulimit bash 内置函数)。您的系统可能被配置(参见 proc(5) )以其他方式转储核心(例如通过 systemd(1) ,可能在 /var/lib/systemd/coredump/ 下)。或许见 coredumpctl(1)systemd-coredump(8)coredump.conf(5)

不要忘记在编译您的应用程序时启用所有警告和调试信息 with g++ -Wall -Wextra -g(当然,改进你的代码以完全没有警告)。

关于linux - 段错误 - 如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52215355/

相关文章:

html - 如何阻止此 <li> 崩溃?

java - 在 Eclipse 中调试简单的 Dropwizard 应用程序

java - 在不生成 Jar 的情况下从 Eclipse 调试 SplashScreen

c - C <curses.h> 中的段错误

regex - 替换数字对之间的分隔符

python - 使用 python 将外部文件中的数据保存到列表中

linux - 传递文件名并运行的shell脚本

.net - 我如何连接到 .NET 中的远程 mysql 服务器?

C 程序在给出正确输出后意外崩溃

c - 在 C 中的结构内部使用指针时出现段错误(可能与 LAPACKE 有关)