Debugging Chromium
This document provides a high-level overview of debugging the Chromium browser and its child processes. For more detailed and platform-specific instructions, please see the links at the end of this guide.
Getting Started: Attaching to Processes
Chromium is a multi-process application. The first step in debugging is often identifying and attaching to the correct process.
- Browser Process: This is the main process. You can start it directly in a debugger (e.g.,
gdb --args out/Default/chrome
). - Renderer, GPU, and Utility Processes: These are child processes launched by the browser. To debug them from startup, you need to use special command-line flags.
Useful Command-Line Flags for Debugging
Pass these to the chrome
executable to alter its behavior for debugging.
--wait-for-debugger
- Pauses the child process (renderer, GPU, etc.) on startup until a debugger is attached. This is the most reliable way to debug child process initialization.
--renderer-cmd-prefix='xterm -e gdb --args'
- Launches new renderer processes inside an
xterm
with gdb
attached. This is a common and useful debugging flag on Linux.
--utility-cmd-prefix='xterm -e gdb --args'
- Same as above, but for utility processes.
--no-sandbox
- Disables the security sandbox in all processes. This can make it easier to attach a debugger, but be aware of the security implications.
--single-process
- Runs the renderer and browser in the same process. Note: This is not a realistic representation of how Chrome runs and can mask or create bugs that don't exist in multi-process mode. Use with caution.
--enable-logging --v=1
- Enables verbose logging, which can be very helpful for understanding what's happening. Increase the
v
value for more verbosity.
Finding the Right Process
When Chrome is already running, you can use its built-in Task Manager to find the process you want to debug.
- Open Task Manager:
Shift+Esc
(or More Tools > Task Manager
in the menu). - Get Process ID (PID): Right-click on the table header and enable the “Process ID” column. You can then use this PID to attach your debugger (
gdb -p <pid>
).
Platform-Specific Guides
For detailed instructions on setting up and using a debugger on your specific platform, please refer to the following guides:
Other Useful Debugging Resources