Ste*_*ing 21 crash gdb segmentation-fault
正常运行时,我的程序崩溃并出现分段错误.所以我用gdb运行它,但是当我这样做时它不会崩溃.有谁知道为什么会这样?我知道Valgrind的faq提到了这一点(并没有在valgrind下崩溃),但我真的找不到与谷歌中的gdb相关的任何内容.如果有人能告诉我原因,或者在发生这种情况时建议寻找一些东西,我将非常感激.
Eth*_*eal 15
我以前曾经遇到过这种情况(你并不孤单),但我不记得我做了什么来解决问题(我认为这是双重免费).
我的建议是设置你的环境来创建核心转储,然后在程序崩溃后使用GDB调查核心转储.在bash中,这是完成的ulimit -c size,其中大小可以是任何东西; 我个人使用50000最大25MB; 该单位以512字节为增量.
您可以使用GDB来调查核心转储gdb program core.
尝试附加到 中正在运行的进程gdb,继续,然后重现崩溃。换句话说,不要在 ; 内启动程序gdb。相反,正常启动程序,然后attach <pid>。
有时,当单独单步执行各行时,导致程序崩溃的竞争条件不会显现出来,因为步骤之间的“长时间”暂停已经消除了竞争危险或使其变得极其不可能。
嗯,我追踪到了 pthread_detach 调用。我正在做 pthread_detach(&thethread)。我只是拿走了引用并将其更改为 pthread_detach(thethread) 并且工作正常。我并不肯定,但也许通过分离引用然后在超出范围时再次销毁它来实现双重释放?