Visual Studio 2008 在堆栈溢出后显示完整的堆栈跟踪
Visual Studio 2008 show FULL stack trace after stack overflow
我有一个正在运行的C++项目,当我在 IDE 中的调试器下运行它时,它发生了堆栈溢出。
Visual Studio 2008 已经承担起截断溢出线程的堆栈跟踪的责任(好吧,如果我们要这样做,为什么要检查溢出?)。
是否有一些视图选项或调试选项可以向我显示此线程调用的根目录?
因此,从本质上讲,除了向我提供堆栈跟踪可能被损坏的原因等(我是否也禁用我的AV并运行memtest86?)是否有人有关于Visual Studio 2008中堆栈跟踪截断的实际信息?
简单的解决方案是从一开始就保持堆栈足够小,以便堆栈溢出更早发生。无论如何,您都不想要一个兆字节的重复函数。
如果你想拥有一个大堆栈并避免由于一些简单的递归错误而导致堆栈溢出,请使用TLS:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686749(v=vs.85).aspx。
在进程启动时分配一个槽,然后使用 TlsGetValue 和 TlsSetValue 递增槽的值,然后检查是否超出该值,然后闯入调试器或在假定有故障的函数中执行其他一些"暂停"。
如果没有黑客,它不适用于第 3 方代码,但它对我来说很好地解决了限制并且也很轻巧。
相关文章:
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 提升堆栈跟踪不显示函数名称和行号
- cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 class4.exe.sta
- 如何按指针查看堆栈跟踪
- WinDbg 不显示某些小型转储文件的完整堆栈跟踪
- 发布代码的 gdb 堆栈跟踪可读性如何影响 x64?
- 提升::堆栈跟踪::safe_dump_to输出大小
- Qt 5.9中的QML崩溃-帮助读取堆栈跟踪
- 如何获取崩溃的DLL的堆栈跟踪?
- 当外部源代码中发生异常时,无法正确使用自创建的小型转储文件的堆栈跟踪
- 在 Linux 平台上以 C/C++ 打印进程的所有线程堆栈跟踪
- Boost 堆栈跟踪异步信号安全吗?
- 使用 gdb 时无法获取堆栈跟踪
- VC++ 堆栈跟踪不会解析生产环境中的函数名称
- 从堆栈跟踪中查找共享库中的源代码行
- 捕获异常后的堆栈跟踪
- 是否有一种便携式/标准的方法可以在堆栈跟踪中获取文件名和亚麻布
- 为什么谷歌测试不打印堆栈跟踪或文件名
- 在明夫中打印堆栈跟踪
- GDB 显示奇怪的堆栈跟踪