gpt4 book ai didi

visual-c++ - 使用/GS安全检查如何找到故障位置?

转载 作者:行者123 更新时间:2023-12-02 03:34:22 25 4
gpt4 key购买 nike

如何找出远程计算机上 Visual C++ 安全检查失败的地方?

我被带到一个项目来协助并使用 Visual Studio 2013,它具有/GS 安全检查以发现缓冲区溢出。这太棒了,我不想关闭它们,但它们导致软件在特定计算机上“崩溃”,我正在努力寻找一种方法来知道在哪里。无法使用用于捕获和记录异常的常规工具。 Dr Watson 似乎不再受支持,我无法远程调试到计算机。

我希望能得到一个指向适当工具的指针,以了解未通过安全检查时堆栈的内容。谢谢。

最佳答案

感谢Hans和James,答案如下:

首先,在出现问题的远程机器上,为可执行文件启用小型转储。详情在Collecting User-Mode Dumps但本质上是为名字创建一个key

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 中打开一个文件(没有打开其他项目,打开一个文件而不是解决方案),然后选择转储文件类型。打开文件,IDE 中显示“运行”项。这将打开失败时的文件,并显示异常类型。您的模块的调用堆栈已全部显示出来,这应该足以让您了解它在哪里爆炸以及如何修复它。

祝你好运!

关于visual-c++ - 使用/GS安全检查如何找到故障位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24608398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com