在没有安装Visual Studio的情况下获得Windows崩溃的堆栈跟踪?(c++)
Get stack trace of a crash on Windows without installing Visual Studio? (C++)
我有一个c++应用程序,它在世界另一端的某人的计算机上崩溃了。我没有办法模拟它或得到相同的电脑。这个人不是开发人员,所以我不能要求他安装Visual Studio之类的东西。我有相当深的调试日志,但他们没有发现任何可用的。
是否有一个工具,可以生成应用程序在崩溃时的堆栈跟踪?这样的东西在OSX中是可用的,但似乎Windows没有。
您可以使用procdump。可以将其设置为调试器,以自动创建崩溃进程的转储。
Procdump是Sysinternal工具的一部分,可以在以下位置找到:
http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx相关开关:
为挂起的应用程序创建转储:
为名为'hang.exe'的进程写一个迷你转储,当其中一个是Windows超过5秒无响应:
C:>procdump -h hang.exe hungwindow.dmp
自动创建应用程序崩溃转储:
注册为即时(AeDebug)调试器。进行完整转储c: 转储。
C:>procdump -ma -i c:dumps
创建一个pid转储:
C:>procdump <PID>
您可以使用windbg来读取转储文件:
使用google的lib来为msvc调试miniidump。CrashRpt
由于google似乎在这里领先于所有"窗口的堆栈跟踪",您也可以使用"休眠"或"非常休眠"实用程序获得正在运行的进程的堆栈跟踪。
另一个选项:在gdb.exe中运行,按ctrl+c
您的应用程序可以尝试自己处理崩溃并写出诊断。Windows上的关键字是"结构化异常处理";https://learn.microsoft.com/en-us/windows/win32/debug/structured-exception-handling
应用程序可以自己捕获堆栈跟踪:https://learn.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-stackwalk
- Qt 5.9中的QML崩溃-帮助读取堆栈跟踪
- 如何获取崩溃的DLL的堆栈跟踪?
- C 链接列表堆栈POP功能崩溃
- 当程序与符号名称一起崩溃时,输出呼叫堆栈
- QT应用程序崩溃但不容易复制,我捕获了转储堆栈以及如何通过堆栈找到源代码
- 程序在函数声明时崩溃,出现未经处理的异常:堆栈溢出
- std::函数在堆栈上的数组中使用时崩溃
- 在Windows上使用gcc崩溃后转储堆栈
- While循环导致堆栈转储,程序在C++中崩溃
- WinDbg堆栈跟踪显示了malloc的崩溃点
- 调试发布构建客户端崩溃:获取调用堆栈的可能方法是什么?
- 为什么在堆栈上使用变量时initstate_r会崩溃
- 崩溃后如何处理"impossible"堆栈跟踪?
- 在没有安装Visual Studio的情况下获得Windows崩溃的堆栈跟踪?(c++)
- linux上的Qt应用程序如何崩溃,堆栈中没有我的代码(只有Qt代码和std库)
- 来自回溯的堆栈跟踪未显示导致多线程环境下崩溃的方法
- c++全局/堆栈实例ctor/dtor调用静态函数时崩溃
- C++ 由于堆栈溢出,迭代合并排序的实现在大输入大小时崩溃
- 如何在Android的崩溃转储中获得更多的调用堆栈深度?
- 什么是崩溃我的应用程序的异常,给定一个调用堆栈与UnhandledExceptionFilter