【发布时间】:2018-03-29 05:44:19
【问题描述】:
我正在编写一个相当长的程序,在运行了一段时间后,我突然得到:
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
作为异常处理的新手,我做了一些研究,发现通过将以下内容添加到我的 main 函数中,我可能会获得更多信息:
int main(int argc, char **argv){
try{
//stuff
}
catch(exception const &exc){
cerr << "Caught exception: " << exc.what() << endl;
}
}
结果如下:
Caught exception: basic_string::substr
这并不比默认输出有用;它没有告诉我任何关于触发核心转储的行(我的程序中有很多 substr 调用)、substr 试图处理的数据等。有没有一种方法可以在 C++ 中显示诸如此类的信息,或者使用 gdb 等调试器是我唯一的选择吗?
【问题讨论】:
-
使用调试器有什么问题。然后它可以准确地告诉你是哪一行引发了异常......
标签: c++ debugging exception-handling