更方便的监测变量值变化更方便的翻阅当前执行代码所在文件
就是设置会稍微麻烦一些。& m K9 N5 w. O! u% T1 Y
步骤 1:安装调试插件' G2 p+ w& o8 u3 W( P8 s
VS code 默认只支持 node.js 语言的调试,其他语言的调试需要安装插件。- x0 d6 x1 l, X+ ~+ k
搜索 C++,安装插件。不过要注意的是,插件本身并不具备编译、调试的能力,需要另外使用软件进行编译、调试[1]。! {; O7 d3 _: q8 Z( M
步骤2:配置
调试前需要手动配置launch.json文件指定调试入口,点击 Open Configurations开始配置:1 c. n' d; q/ V9 f
3 o4 M ?9 i/ |8 P
配置VS code配置文件:
- {
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes./ L5 O. R. I7 e+ { @9 D1 E" G/ u5 [9 r
- // For more information, visit: <a href="https://go.microsoft.com/fwlink/?linkid=830387" target="_blank">https://go.microsoft.com/fwlink/?linkid=830387</a>
- "version": "0.2.0",1 H2 @% }& J# l9 [$ p$ D9 T
- "configurations": [
- {0 m4 s! e, c8 u$ \; ?: {$ Z ^
- "name": "(gdb) Launch",
- "type": "cppdbg"," I# K& k$ \* ]8 Q/ X. Q
- "request": "launch",
- "program": "${workspaceFolder}/src/bitcoind",
- "args": ["-regtest"],8 K p- ]# s" m: ^' ]3 G1 Z0 P
- "stopAtEntry": false,
- "cwd": "${workspaceFolder}",
- "environment": [],
- "externalConsole": true,
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",6 f% R, i" C! G+ G- o
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ]
- }
- ]' w7 }8 |; I- I5 V6 M
- }
配置文件的路径为 ./vscode/launch.json
json文件中各个参数的含义:
program:程序编译后得到的可执行文件,即调试的入口args:可执行文件的参数,以上图中指定-regtest为例name: 配置的名称,在左侧调试框可以选择使用哪个配置8 u8 h) l& ]8 ^ j0 Z
步骤 3:编译
调试前需要先将程序编译到上述设置的指定位置,可以在命令行启动编译。也可以通过配置.vscode/tasks.json文件设置任务,在 VS code 内启动编译程序[2][3].
bitcoin core 的编译命令[4],注意添加给 configure 添加参数 --enable-debug[5]:& @! ^- I8 l5 i) L! `
cd bitcoin/; A5 N9 K+ q O+ `7 k, _
./autogen.sh$ H& d: \" O9 Z0 }* T) H
./configure --disable-wallet --without-gui --without-miniupnpc --enable-debug9 P, h# J2 D' E/ e/ v
make check4 _0 p# I( \& }! \ L* y: p4 B9 r6 W
由于在 macOS 环境下编译失败,在 Debian 环境下编译成功了,下面以 Debian 环境示范。
步骤四:开始调试# t" |; }1 Q/ j; }0 K( g
点击行号左侧设置断点:) a, J9 P& ~: Q4 J( R- a6 y
) i- v% q* K6 i c# T
点击左侧调试工具栏的“开始”按钮,或者按 F5 快捷键,开始调试:1 ~7 ~5 H' q8 j6 A& ^6 Y" d3 w2 E
9 l `2 X' q: g% y
点击屏幕上方的 step into 运行下一步:
I5 R U/ m& s! A1 ^) J) q
20190526更新:
macOS 环境下编译成功了,只是执行失败了。原因是vscode 调试时会在 shell 运行命令:
arch -arch x86_64 '/Users/yushengzhou/.vscode/extensions/ms-vscode.cpptools-0.23.1/debugAdapters/lldb/bin/lldb-launcher' --unix-socket=/tmp/61Ab3Q --arch=x86_64 --working-dir '/Users/yushengzhou/code/bitcoin' --disable-aslr -- '/Users/yushengzhou/code/bitcoin/src/bitcoind' '' ; echo Process exited with status $? ; exit- [; a0 B6 G7 ^+ d# r3 G
这个用的是 bash 的语法,而我默认用的是 shell 是 fish。因为语法的不兼容而造成运行失败,只需要将 shell 换成 bash 即可。
: Y* g B% W. P1 M