我正在使用一个库,它似乎通过缓冲区逐行读取压缩文件。它似乎在gdb中的BZ2_bzRead中崩溃但在valgrind中没有崩溃,因为我有3个这样的读取器对象实例读取不同的文件。我检查过缓冲区,文件指针在gdb中的函数调用点都是有效的。
为了重现错误,我必须在我的代码中使用new创建一些虚拟对象,并且在某些固定元素之后,这似乎失败了。如果我不这样做,那么它似乎运行得非常好。
起初,我认为我以某种方式腐败了堆,但是valgrind似乎没有在memcheck中找到任何这样的东西。它只报告了fabs和lround上的一些未初始化的调用(据我所知,似乎没有任何这样的参数)。
有没有办法防止pyror中的segfault并使用try catch或valgrind或gdb或其他一些机制来捕获它以查看内存违规?