为什么在我的Visual Studio调试会话中立即发生堆栈溢出异常?

时间:2013-04-03 20:28:50

标签: stack-overflow

我正在尝试调试用C ++编写的程序(.exe)。该程序是一个控制台应用程序,是面向数学的模拟,没有GUI或接口代码。我试图通过右键单击VS的解决方案资源管理器中的可执行文件并选择“步入新实例”,在Win 7(64位)上的Visual Studio 2008中编译此程序的调试会话。但是,在执行第一行代码之前,Visual Studio会在sim.exe中报告“0x00000001401b3937处的未处理异常:0xC00000FD:堆栈溢出”。这是前几行代码的片段

int_T main(int_T argc, const char_T *argv[])
{
  SimData thisSim;
  int InputFlag = 0;

调试器箭头指向第一个尖括号。

以下是dissabembly视图的快照:

 int_T main(int_T argc, const char_T *argv[])
 {
 0000000140141930  mov         qword ptr [rsp+10h],rdx 
 0000000140141935  mov         dword ptr [rsp+8],ecx 
 0000000140141939  push        rsi  
 000000014014193A  push        rdi  
 000000014014193B  mov         eax,1120C8h 
 0000000140141940  call        __chkstk (1401B3900h) 
 0000000140141945  sub         rsp,rax                <------DEBUGGER IS STOPPED HERE
 0000000140141948  mov         rax,qword ptr [__security_cookie (1401F7050h)] 
 000000014014194F  xor         rax,rsp 
 0000000140141952  mov         qword ptr [rsp+1120B0h],rax 
 ///////////////////////////////////////////////////////////////////////////
 /* Initialize Instance of SimData */
 SimData thisSim;
 int InputFlag = 0;
 000000014014195A  mov         dword ptr [rsp+20h],0

我不是Visual Studio的专家,但我过去使用了相当数量的调试,我从未见过这种行为。

有关如何进行的任何想法?

0 个答案:

没有答案