【问题标题】:Google Chrome - Crash Dump LocationGoogle Chrome - 故障转储位置
【发布时间】:2015-06-11 01:03:28
【问题描述】:

我正在尝试调试 Web 应用程序中的一个页面,该页面不断使 Chrome 崩溃(“哇,啪!”错误)。我已经启用/禁用了自动崩溃报告,尝试使用google-chrome --enable-logging --v=1 进行日志记录(以及各种级别的详细程度),我得到的只是chrome_debug.log 中的“崩溃转储ID”@chrome://crashes 显示所有转储 ID,但没有实际的转储文件

我看到other questions 指的是读取转储文件,但我找不到转储文件本身(只有 ID)。

/tmp~/.config/google-chrome/ 中寻找崩溃 ID 没有任何结果,但 ~/.config/google-chrome/chrome_debug.log 表明 something 已发送:

--2015-04-06 11:10:00--  https://clients2.google.com/cr/report
Resolving clients2.google.com (clients2.google.com)... 74.125.228.224, 74.125.228.225, 74.125.228.231, ...
Connecting to clients2.google.com (clients2.google.com)|74.125.228.224|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘/dev/fd/3’

     0K
 Crash dump id:  7dac9d5d58258264 

关于在哪里可以找到发送的实际文件/数据的任何想法?

详情: Chrome 版本:40.0.2214.111(官方构建) Linux Mint 16 (Petra)

编辑:一些额外的信息:

curtis@localhost:-$ tail -n 5 uploads.log && echo $(pwd)
1428584493,ddc357e4600a49e6
1428584497,7ac16455c152381a
1428589439,d00ad6f5e6426f3d
1428934450,66b3f722430511e8
1428939578,7a2efc2b681515d1
/home/curtis/.config/google-chrome/Crash Reports

curtis@localhost:-$ ll -a
total 12
drwx------ 2 curtis curtis 4096 Apr  6 11:32 .
drwx------ 9 curtis curtis 4096 Apr 13 11:43 ..
-rw------- 1 curtis curtis 3291 Apr 13 11:39 uploads.log

自动报告启用...

谢谢!

【问题讨论】:

  • 我不在 Linux 上,但是,我在 Windows 上使用 Chrome。在 Chrome 的“高级设置”中,有一个自动向 Google 发送使用统计信息和崩溃报告的标志。你也有那个flag吗?检查了吗?
  • 看起来默认目录是/tmp,扩展名是.dmp,所以我会在你的例子中寻找/tmp/7dac9d5d58258264.dmp,但我不确定它是否会删除文件发送成功..

标签: google-chrome debugging crash-dumps


【解决方案1】:

*.dmp 文件存储在/tmp/ 中,这与“自动崩溃报告”复选框无关。该文件也与~/.config/google-chrome/中存储的哈希无关

~/.config/google-chrome/Crash Reports/uploads.log:

1429189585,5bddea9f7433e3da

使用 后,此特定报告的故障转储文件为:

chromium-renderer-minidump-2113a256de381bce.dmp

解决方案:

root@localhost:-$ mkdir /tmp/misc && chmod 777 /tmp/misc
root@localhost:-$ cd /tmp
root@localhost:-$ watch -n 1 'find . -mmin -1 -exec cp {} /tmp/misc/ \;'

然后,作为普通用户(不是 root):

google-chrome --enable-logging --v=1

看到watch 命令创建的文件后,运行:

root@localhost:-$ ls -l
-rw-------  1 root root 230432 Apr 16 09:06 chromium-renderer-minidump-2113a256de381bce.dmp
-rw-------  1 root root 230264 Apr 16 09:12 chromium-renderer-minidump-95889ebac3d8ac81.dmp
-rw-------  1 root root 231264 Apr 16 09:13 chromium-renderer-minidump-da0752adcba4e7ca.dmp
-rw-------  1 root root 236246 Apr 16 09:12 chromium-upload-56dc27ccc3570a10
-rw-------  1 root root 237247 Apr 16 09:13 chromium-upload-5cebb028232dd944

现在您可以使用 breakpad 处理 *.dmp 文件。

【讨论】:

  • 我没有 /tmp/misc 目录,并且 /tmp 下没有“*.dmp”文件(但是在 chrome://crashes 中有很多崩溃!
【解决方案2】:

Google Chrome - 故障转储位置

要在本地生成故障转储,

 CHROME_HEADLESS=1 google-chrome

然后将.dmp 文件存储在~/.config/google-chrome/Crash Reports

产生堆栈跟踪

  1. 签出并将depot_tools 添加到您的PATH(用于构建breakpad

    git clone https://chromium.googlesource.com/chromium/tools/depot_tools
    export PATH=`pwd`/depot_tools:"$PATH"
    
  2. 签出并构建breakpad(使用从depot_tools获取)

    mkdir breakpad && cd breakpad
    fetch breakpad
    cd src
    ./config && make
    
  3. 生成不带符号的堆栈跟踪:

    breakpad/src/processor/minidump_stackwalk -m /path/to/minidump
    

更多https://www.chromium.org/developers/decoding-crash-dumps

个人首选方法

  1. 启用崩溃报告:

    Chrome 菜单 > 设置 > 显示高级设置 > 勾选“自动向 Google 发送使用情况统计信息和崩溃报告”

  2. 转到 chrome://crashes > 文件错误 > 将您带到 crbug.com > 完成 报告保持自动添加的report_id field 不变。

  3. Chrome/Chromium 团队的人员将跟进。他们可以提供 你的堆栈跟踪和帮助解决问题。

【讨论】:

  • ./config 不应该是 ./configure 吗?
猜你喜欢
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多