我的应用程序设法使客户的Chrome浏览器在Mac上崩溃。我要求客户启用崩溃报告,并在下次发生时发送转储文件。我得到了一个Crashpad.zip文件,其中包含了一堆.dmp文件。我认为每个文件代表一个Chrome选项卡的进程。试图使用或WinDbg打开这些转储无法工作。请注意,转储文件是在Mac上捕获的,而我正在Windows上工作。
当尝试使用~k查看调用堆栈时,我得到了输出:
0:000> ~k
# Child-SP RetAddr Call Site
00 00000001`6ee35960 00000000`00000000 Google_Chrome_Framework+0x4486b50当试图从铬符号服务器加载符号时,我得到:
0:000> .sympath+ SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com
Symbol search path is: srv*;https://chromium-browser-symsrv.commondatastorage.googleapis.com;SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com
Expanded Symbol search path is: cache*;SRV*https://msdl.microsoft.com/download/symbols;https://chromium-browser-symsrv.commondatastorage.googleapis.com;srv\*c:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Deferred https://chromium-browser-symsrv.commondatastorage.googleapis.com
Deferred SRV\*C:\symbols\*https://chromium-browser-symsrv.commondatastorage.googleapis.com
*** WARNING: Unable to verify timestamp for Google Chrome Framework
0:000> .reload
................................................................
................................................................
................................................................
................................................
Unable to load image /Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/101.0.4951.54/Google Chrome Framework, Win32 error 0n2
*** WARNING: Unable to verify timestamp for Google Chrome Framework
************* Symbol Loading Error Summary **************
Module name Error
Google Chrome Framewor The system cannot find the file specified我的问题是如何获得崩溃转储的符号并对其进行调试?
发布于 2022-06-10 19:03:58
Crashpad将其转储写成实际上是一种Windows的迷你格式。Microsoft中当前的WinDbg预览(1.2205.18001.0)确实可以打开,并从Windows以外的平台(包括Linux )调试崩溃垫转储。它理解并支持MachO图像、MachO符号和包含在MachO中的私有矮人符号。
也就是说--为了有用--目标进程中加载的图像和符号需要被调试器发现。我在Chromium方面的经验有限;然而,据我所知,符号服务器只对Windows版本进行索引。
Linux和Mac MachO映像确实可以在符号服务器上进行索引。与此相关的文档和索引键格式可在https://github.com/dotnet/symstore/blob/main/docs/specs/SSQP_Key_Conventions.md上获得。
如果您有直接下载的图像/符号(例如:调试包等),您可以将它们放在本地路径中,用.sympath和.reload将调试器指向这样的位置。
我相信铬也有自己的一套工具,用于从碰撞垫转储中提取信息:https://www.chromium.org/developers/decoding-crash-dumps/
https://stackoverflow.com/questions/72185853
复制相似问题