[英]Debugging Chrome Crashpad crash report from Mac
我的應用程序以某種方式設法使客戶在 Mac 上的 Chrome 瀏覽器崩潰。 我要求客戶啟用崩潰報告,並在下次發生故障時將轉儲文件發送給我。 我有一個Crashpad.zip文件,其中包含一堆 .dmp 文件。 我想每個文件都代表一個 Chrome 標簽的進程。 嘗試使用 Visual Studio 或 WinDbg 打開這些轉儲不起作用。 請注意,轉儲文件是在 Mac 上捕獲的,我正在使用 Windows。
當嘗試使用~k
查看調用堆棧時,我得到輸出:
0:000> ~k
# Child-SP RetAddr Call Site
00 00000001`6ee35960 00000000`00000000 Google_Chrome_Framework+0x4486b50
當嘗試從 Chromium 符號服務器加載符號時,我得到:
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
我的問題是如何獲取故障轉儲的符號並對其進行調試?
Crashpad 以一種有效的 Windows minidump 格式寫入其轉儲。 Microsoft 商店中當前的 WinDbg Preview (1.2205.18001.0) 確實可以從 Windows 以外的平台(包括 Linux 和 Mac OS)打開和調試crashpad 轉儲。 它理解並支持 MachO 中包含的 MachO 圖像、MachO 符號和私有 DWARF 符號。
也就是說——為了有用——目標進程中加載的圖像和符號需要由調試器發現。 我在 Chromium 方面的經驗有限; 但是,據我所知,符號服務器只索引那里的 Windows 版本。
Linux ELF 和 Mac MachO 圖像確實可以在符號服務器上進行索引。 有關該內容和索引鍵格式的文檔可在https://github.com/dotnet/symstore/blob/main/docs/specs/SSQP_Key_Conventions.md獲得
如果您有直接下載某些東西的圖像/符號(例如:調試包等),您可以將它們放在本地路徑中,使用 .sympath 和 .reload 將調試器指向這樣的路徑。
我相信 Chromium 也有自己的一套工具來從 crashpad 轉儲中提取信息: https ://www.chromium.org/developers/decoding-crash-dumps/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.