| Index: docs/testing/using_breakpad_with_content_shell.md
|
| diff --git a/docs/testing/using_breakpad_with_content_shell.md b/docs/testing/using_breakpad_with_content_shell.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0fcfadfbbfd02bbbdd18c9b3bb0052ac66ec35c1
|
| --- /dev/null
|
| +++ b/docs/testing/using_breakpad_with_content_shell.md
|
| @@ -0,0 +1,118 @@
|
| +# Using breakpad with content shell
|
| +
|
| +When running layout tests, it is possible to use
|
| +[breakpad](../../breakpad/breakpad/) to capture stack traces on crashes while
|
| +running without a debugger attached and with the sandbox enabled.
|
| +
|
| +## Setup
|
| +
|
| +On all platforms, build the target `blink_tests`.
|
| +
|
| +*** note
|
| +**Mac:** Add `enable_dsyms = 1` to your
|
| +[gn build arguments](../../tools/gn/docs/quick_start.md) before building. This
|
| +slows down linking several minutes, so don't just always set it by default.
|
| +***
|
| +
|
| +*** note
|
| +**Linux:** Add `use_debug_fission = true` to your
|
| +[gn build arguments](../../tools/gn/docs/quick_start.md) before building.
|
| +***
|
| +
|
| +Then, create a directory where the crash dumps will be stored:
|
| +
|
| +* Linux/Mac:
|
| + ```bash
|
| + mkdir /tmp/crashes
|
| + ```
|
| +* Android:
|
| + ```bash
|
| + adb shell mkdir /data/local/tmp/crashes
|
| + ```
|
| +* Windows:
|
| + ```bash
|
| + mkdir %TEMP%\crashes
|
| + out\Default\content_shell_crash_service.exe --dumps-dir=%TEMP%\crashes
|
| + ```
|
| +
|
| +## Running content shell with breakpad
|
| +
|
| +Breakpad can be enabled by passing `--enable-crash-reporter` and
|
| +`--crash-dumps-dir` to content shell:
|
| +
|
| +* Linux:
|
| + ```bash
|
| + out/Debug/content_shell --enable-crash-reporter \
|
| + --crash-dumps-dir=/tmp/crashes chrome://crash
|
| + ```
|
| +* Mac:
|
| + ```bash
|
| + out/Debug/Content\ Shell.app/Contents/MacOS/Content\ Shell \
|
| + --enable-crash-reporter --crash-dumps-dir=/tmp/crashes chrome://crash
|
| + ```
|
| +* Windows:
|
| + ```bash
|
| + out\Default\content_shell.exe --enable-crash-reporter ^
|
| + --crash-dumps-dir=%TEMP%\crashes chrome://crash
|
| + ```
|
| +* Android:
|
| + ```bash
|
| + build/android/adb_install_apk.py out/Default/apks/ContentShell.apk
|
| + build/android/adb_content_shell_command_line --enable-crash-reporter \
|
| + --crash-dumps-dir=/data/local/tmp/crashes chrome://crash
|
| + build/android/adb_run_content_shell
|
| + ```
|
| +
|
| +## Retrieving the crash dump
|
| +
|
| +On Linux and Android, we first have to retrieve the crash dump. On Mac and
|
| +Windows, this step can be skipped.
|
| +
|
| +* Linux:
|
| + ```bash
|
| + components/crash/content/tools/dmp2minidump.py /tmp/crashes/*.dmp /tmp/minidump
|
| + ```
|
| +* Android:
|
| + ```bash
|
| + adb pull $(adb shell ls /data/local/tmp/crashes/*) /tmp/chromium-renderer-minidump.dmp
|
| + components/breakpad/tools/dmp2minidump /tmp/chromium-renderer-minidump.dmp /tmp/minidump
|
| + ```
|
| +
|
| +## Symbolizing the crash dump
|
| +
|
| +On all platforms except for Windows, we need to convert the debug symbols to a
|
| +format that breakpad can understand.
|
| +
|
| +* Linux:
|
| + ```bash
|
| + components/crash/content/tools/generate_breakpad_symbols.py \
|
| + --build-dir=out/Default --binary=out/Default/content_shell \
|
| + --symbols-dir=out/Default/content_shell.breakpad.syms --clear --jobs=16
|
| + ```
|
| +* Mac:
|
| + ```bash
|
| + components/crash/content/tools/generate_breakpad_symbols.py \
|
| + --build-dir=out/Default \
|
| + --binary=out/Default/Content\ Shell.app/Contents/MacOS/Content\ Shell \
|
| + --symbols-dir=out/Default/content_shell.breakpad.syms --clear --jobs=16
|
| + ```
|
| +* Android:
|
| + ```bash
|
| + components/crash/content/tools/generate_breakpad_symbols.py \
|
| + --build-dir=out/Default \
|
| + --binary=out/Default/lib/libcontent_shell_content_view.so \
|
| + --symbols-dir=out/Default/content_shell.breakpad.syms --clear
|
| + ```
|
| +
|
| +Now we can generate a stack trace from the crash dump. Assuming the crash dump
|
| +is in minidump.dmp:
|
| +
|
| +* Linux/Android/Mac:
|
| + ```bash
|
| + out/Default/minidump_stackwalk minidump.dmp out/Debug/content_shell.breakpad.syms
|
| + ```
|
| +* Windows:
|
| + ```bash
|
| + "c:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64\cdb.exe" ^
|
| + -y out\Default -c ".ecxr;k30;q" -z minidump.dmp
|
| + ```
|
|
|