<分区>
我的应用程序崩溃了,它在控制台上打印了下面的内容:
sh[366]: /bin/sh: line 1: 367 Segmentation fault (core dumped) ./myapp
我的问题是这里的367是什么意思?
我无法在任何地方找到核心转储文件。
知道如何在这种情况下调试段错误吗?
<分区>
我的应用程序崩溃了,它在控制台上打印了下面的内容:
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/