堆栈溢出,找不到位置
Getting a stack overflow, cannot find where
我想我知道发生堆栈溢出的函数(称之为function2)。但是,我在整个函数体周围添加了一个 try-catch 语句,在 catch 部分放置了一个中断,但是当堆栈溢出发生时,它不会在 catch 语句中暂停。但是,如果我转到调用函数 2() 的上一个函数(调用它 function1),则跳过 function2() 调用确实会引发异常。
我去了调试 ->异常,大多数事情都被勾选了。
我正在使用VS2012。
还有其他方法可以检查吗?这就是我本质上所做的:
void function1(){
//Code does reach line below.
function2();
//Code never reaches here
}
void function2(){
try{
//All the logic for function2();
}
catch(exception& e){
//I put a break point here but it never catches the break point
}
}
编辑:函数2()中有一些东西导致了这种情况。该函数执行了很多字符处理,我尝试将所有内容移动到指针 - 但我仍然得到异常。
如果我不能使用异常处理,在VS2012中调试此问题的最佳过程是什么?
编辑2:如何在Visual Studio中查看堆栈大小/增长?
Stackoverflow 是在你进入function2()
体时生成的 - 所以function2
中的任何内容都不会被执行,包括try-catch
块。
Stackoveflow 不像其他人那样是一个例外,你不能像其他人一样捕获它 - 这通常意味着你的内存模型刚刚损坏,然后你需要终止你的程序 - 在这种情况下没有太多事情要做。
有关捕获它们的详细信息,请参阅此参考:在递归C++函数中捕获"堆栈溢出"异常
你可以在函数 2 catch 块中使用抛出 e,然后你的异常将被发送到 function1(),你可以在函数 1 上捕获它。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- CMake 在 Windows 上的自定义位置上找不到 Boost
- 快速排序;分段错误,但找不到位置?
- 链接器找不到库,即使我用 -L 指定了它的位置
- 找不到 GLSL 着色器统一位置
- CMake 找不到源文件,即使它位于正确的位置
- 8谜题代码.我的队列没有填充,我找不到错误的位置
- 找不到无限循环发生的位置
- 找不到异常源:cudaError_enum内存位置
- 堆栈溢出,找不到位置
- 错误:控制到达非无效功能的末尾.找不到修复错误的位置
- 路径位置错误:在 PATH 中找不到程序"make"?
- VC6正在记住一个activeX控制器使用的dll位置,我找不到在哪里更改它
- VBA找不到我的DLL,尽管硬编码的位置
- 核心转储,但是找不到错误位置,有GDB的错误信息