Chromium Code Reviews| Index: docs/qtcreator.md |
| diff --git a/docs/qtcreator.md b/docs/qtcreator.md |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..932cc093c3f91a5af30e76b1f85ebc8e3c966ad6 |
| --- /dev/null |
| +++ b/docs/qtcreator.md |
| @@ -0,0 +1,120 @@ |
| +# Use Qt Creator as IDE or GUI Debugger |
| + |
| +[Qt Creator](https://www.qt.io/ide/) |
| +([Wiki](https://en.wikipedia.org/wiki/Qt_Creator)) is a cross-platform C++ IDE. |
| + |
| +You can use Qt Creator as a daily IDE or just as a GDB frontend and that does |
| +not require project configuration. |
| + |
| +[TOC] |
| + |
| +## IDE |
| + |
| +### Workflow |
| + |
| +1. `ctrl+k` Activate Locator, you can open file(not support sublime-like-search) or type `. ` go to symbol. |
| +2. `ctrl+r` Build and Run, `F5` Debug. |
| +3. `F4` switch between header file and cpp file. |
| +4. `ctrl+shift+r` rename symbol under cursor. |
| +5. Code completion is built-in. And you can add your snippets. |
| + |
| +### Setup as IDE |
| + |
| +1. Install latest Qt Creator |
| +2. under chromium/src `gn gen out/Default --ide=qtcreator` |
| +3. qtcreator out/Default/qtcreator_project/all.creator |
| + |
| +It takes 3 minutes to parsing C++ files in my workstation!!! And It will not |
| +block you while parsing. |
| + |
| +#### Code Style |
| + |
| +1. Help - About Plugins enable Beautifier. |
| +2. Tools - Options - Beautifier - Clang Format, select use predefined style: |
|
Nico
2017/03/03 15:57:16
The following things seem important to me:
1. cla
|
| +chromium. You can also set a keyboard shortcut for it. |
| +3. Tools - Options - 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> |
| +``` |
| + |
| +#### Build & Run |
| + |
| +In left panel, projects - setup the ninja command in build and clean step and |
| +executable chrome path in run. |
| + |
| +## Debugger |
| + |
| +**You can skip the project settings and use QtCreator as a single file |
| +standalone GDB frontend. ** |
| + |
| +1. Tools - Options - Build & Run - Debuggers, make sure GDB is set. |
| +2. Tools - Options - Kits, change the Desktop kit to GDB(LLDB doesnot work in |
| + Linux). |
| +3. Open file you want to debug. |
| +4. Debug - Start Debugging - Attach to running Application, you may need to |
| + open chrome's task manager to find the process number. |
| + |
| +### Tips, tricks, and troubleshooting |
| + |
| +#### Make GDB start fast |
| + |
| +Add `gdb_index = true` to `gn args`. |
| + |
| +#### Debugger shows start then finish |
| + |
| +``` |
| +$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope |
| +``` |
| + |
| +Ensure yama allow you to attach another process. |
| + |
| +#### Debugger do not stop in break point |
| + |
| +Ensure you are using GDB not LLDB in Linux. |
| + |
| +#### More |
| + |
| +See |
| +https://chromium.googlesource.com/chromium/src/+/master/docs/linux_debugging.md |