Qt Creator (Wiki) is a cross-platform C++ IDE.
You can use Qt Creator as a daily IDE on Linux or Mac, or just as a GDB/LLDB frontend (which does not require project configuration).
[TOC]
ctrl+k
or cmd+k
(macOS).F2
.ctrl+shift+b
or shift+cmd+b
(macOS).ctrl+r
or cmd+r
(macOS), or debug with F5
.F4
.gn gen out/Default --ide=qtcreator
.qtcreator out/Default/qtcreator_project/all.creator
.It takes 3 minutes to parse all of chromium’s C++ files on my workstation!!! And it does not block while parsing.
$chromium_checkout_dir/src/buildtools/$os/clang-format
, and
set Use predefined style: file
. You can also set a keyboard shortcut
for it.Tools - Options - C++ - Code Style, import this xml file.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 4.2.1, 2017-02-08T19:07:34. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">true</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">false</value>
<value type="bool" key="BindStarToLeftSpecifier">false</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">true</value>
<value type="bool"
key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">true</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool"
key="IndentDeclarationsRelativeToAccessSpecifiers">false</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">2</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="ShortGetterName">true</value>
<value type="bool" key="SpacesForTabs">true</value>
<value type="int" key="TabSize">2</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">chrome</value>
</data>
</qtcreator>
(Optional) Enable the issues pane for easy navigation to the location of compiler errors. qtcreator expects to find compiler errors on stderr, but ninja forwards all subcommand output to stdout. So use the following wrapper script to forward it to stderr instead.
#!/bin/sh
/path/to/depot_tools/ninja "$@" >&2
In the left panel - Projects, set up the ninja command in the build and clean steps, and add the path to chrome in the run configuration.
You can skip the project settings and use QtCreator as a single file standalone GDB or LLDB (macOS) frontend.
For macOS :
For Linux :
Ensure yama allows you to attach to another process:
$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
Ensure you are using GDB on Linux, not LLDB.
Linux : See https://chromium.googlesource.com/chromium/src/+/main/docs/linux/debugging.md
macOS : https://chromium.googlesource.com/chromium/src/+/main/docs/mac/debugging.md