我有一个 linux 程序,它以:
terminate called after throwing an instance of 'std::bad_function_call'
在调用堆栈中,我很遗憾看不到从哪里调用了错误的函数。而且它在产生这个错误之前做了很多迭代,所以我不能真正手动调试它。
有没有办法找到有问题的代码?
您可以使用 gdb 查看抛出异常的位置:
(gdb) catch throw
每当在您的程序中引发新的异常时,它就会停止,您将看到它发生在哪里。
请参考本网站。就我而言,这个问题是由使用空函数指针引起的。 http://www.cplusplus.com/reference/functional/bad_function_call/