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).
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.<?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>
#!/bin/sh /path/to/depot_tools/ninja "$@" >&2
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