如何在远程计算机上找到Visual C ++安全检查失败的位置?
我被带到一个项目来协助并使用Visual Studio 2013,它具有/ GS安全检查以发现缓冲区溢出。这很棒,而且我不想关掉它们,但是它们导致软件崩溃了#34;在一台特定的计算机上,我正在努力寻找一种方法来了解哪里。不能使用捕获和记录异常的常规工具。 Watson博士似乎不再受支持,我无法远程调试到计算机。
我很欣赏指向相应工具的指针,以了解安全检查失败时堆栈的内容。谢谢。
答案 0 :(得分:1)
感谢Hans和James,答案如下:
首先,在遇到问题的远程计算机上,为可执行文件启用小型转储。详细信息在Collecting User-Mode Dumps中,但实质上是为名称
创建密钥HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
DumpFolder = REG_EXPAND_SZ "c:\Path\To\Folder"
DumpCount = REG_DWORD 0x00000001
DumpType = REG_DWORD 0x00000002
完成后,让您的安全应用程序崩溃,并在该文件夹中获得.dmp文件。
好的,现在你必须在Visual Studio中使用它。这也很容易。完全在Post-Mortem Debugging Your Application with Minidumps and Visual Studio .NET中描述(不要担心.Net部分,这是不相关的),你只需在Visual Studio中打开一个文件(没有其他项目打开,也没有打开解决方案,但文件),并选择转储文件类型。打开文件,它有一个" Run" IDE中显示的项目。这将打开文件失败时的状态,并显示异常类型。你的模块的调用堆栈都显示出来,这应该足以知道它发生了什么,以及如何解决它。
祝你好运!