debugging 在不安装Visual Studio的情况下获取Windows上崩溃的堆栈跟踪?(C++)

pcrecxhr  于 2023-06-23  发布在  Windows
关注(0)|答案(4)|浏览(177)

我有一个C++应用程序,它在世界另一端的某个人的计算机上崩溃了。我没办法模拟或者用同一台电脑。这个人不是开发人员,所以我不能真的要求他安装Visual Studio或其他东西。我有相当深的调试日志,但它们没有显示任何有用的东西。
有没有一种工具,可以生成应用程序崩溃时的堆栈跟踪?这样的东西是可用的OSX,但似乎Windows没有它。

flseospp

flseospp1#

您可以使用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:\dumps中进行完全转储。

C:\>procdump -ma -i c:\dumps

为pid创建转储:

C:\>procdump <PID>

您可以使用windbg读取转储文件:Getting started with dump file analysis

sulc1iza

sulc1iza2#

使用google的lib为msvc调试minidump。CrashRpt

pb3skfrl

pb3skfrl3#

由于google似乎在所有“windows堆栈跟踪”方面处于领先地位,你也可以使用“sleep”或“very sleepy”工具来获取正在运行的进程的堆栈跟踪。
另一种选择:在gdb.exe中运行它,按ctrl+c

6jjcrrmo

6jjcrrmo4#

您的应用程序可以尝试自己处理崩溃并写出诊断。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
或者写一个小转储。

相关问题