Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

VS code 调试 bitcoin core

华胥
677 0 0
使用 VS code 调试代码相比原生的gdb调试代码会带来一些好处:' `' w& q# e  x# P
更方便的监测变量值变化更方便的翻阅当前执行代码所在文件# z+ V% x& o( V4 [
( E- G6 j% h7 u; U
就是设置会稍微麻烦一些。
- R- Q  U' o4 A- @* \8 S步骤 1:安装调试插件; _( h) Q) a$ @9 x
VS code 默认只支持 node.js 语言的调试,其他语言的调试需要安装插件。
2 Q  x9 p7 s4 M6 U2 o- b0 A& {: Q; E( G, N, H, }6 v  W
搜索 C++,安装插件。不过要注意的是,插件本身并不具备编译、调试的能力,需要另外使用软件进行编译、调试[1]。3 S8 W8 ]; c7 S+ P

9 `) @! r, C2 |1 o# M: ]" i! I/ j步骤2:配置
+ W" `& T  S8 I7 P* M" x调试前需要手动配置launch.json文件指定调试入口,点击 Open Configurations开始配置:2 E* ]% X5 I. ^
& g4 \3 x$ W! x& _0 Q. Z
配置VS code配置文件:
+ P  J2 G( f% N- r' ?
  1. {- p) Q5 P6 _* J1 S2 y  i
  2.     // Use IntelliSense to learn about possible attributes.7 M: F$ ?, X% n# [; ~$ N
  3.     // Hover to view descriptions of existing attributes.8 C* T9 o- q9 s: U; o" B7 M+ T$ k' ^
  4.     // For more information, visit: <a href="https://go.microsoft.com/fwlink/?linkid=830387" target="_blank">https://go.microsoft.com/fwlink/?linkid=830387</a>
    0 w' u% Z$ s; x
  5.     "version": "0.2.0",
    1 P7 s" E  E: J, K6 l0 x0 c
  6.     "configurations": [* a. q# }4 [& F  }( N
  7.         {
    : {& P" W! H* T
  8.             "name": "(gdb) Launch",# _0 [" H$ O+ l! [) ~$ N% c; k
  9.             "type": "cppdbg",
    * u$ ~! {  T% v/ b" q
  10.             "request": "launch",* x2 r% o: V1 @& {
  11.             "program": "${workspaceFolder}/src/bitcoind",
    ! ^  s% D6 Q- H4 W) z# X1 h9 _
  12.             "args": ["-regtest"],- N# t( g0 f4 h0 y1 s4 U; ~2 _
  13.             "stopAtEntry": false,
    ! n$ l4 N% r7 `. O- S
  14.             "cwd": "${workspaceFolder}",2 k! V, ^; d7 E1 r
  15.             "environment": [],
    5 k/ R: I0 V1 U( Z/ L: M0 V0 M+ E
  16.             "externalConsole": true,
    + S# P3 b1 t* \; h( v# v8 |. I
  17.             "MIMode": "gdb",* W& r/ c0 @( e4 _4 O2 h
  18.             "setupCommands": [; c9 l% a6 D$ B
  19.                 {
    # f3 @' v5 _2 Z
  20.                     "description": "Enable pretty-printing for gdb",2 i. p2 F4 M  u) h7 T
  21.                     "text": "-enable-pretty-printing",# [+ y4 r$ d& j  m! K; x
  22.                     "ignoreFailures": true1 @1 H3 c2 y' v% P$ [+ a
  23.                 }7 k" k" @$ J& Y7 {
  24.             ]0 V+ k2 Z' |# E: J. a0 R/ Z
  25.         }& K- I, d4 |5 X( h
  26.     ]
    3 y9 Z1 L9 V" E6 G! P
  27. }
复制代码
9 c) u# \* Q5 Q
配置文件的路径为 ./vscode/launch.json9 w' h5 h5 c0 G$ ^
json文件中各个参数的含义:
3 T/ n$ D" L& F9 Mprogram:程序编译后得到的可执行文件,即调试的入口args:可执行文件的参数,以上图中指定-regtest为例name: 配置的名称,在左侧调试框可以选择使用哪个配置& w8 k/ {5 H9 }' a+ R' V7 y

7 q9 P' m, l5 `  P9 B; y2 L6 }步骤 3:编译- i- e$ X# ]/ P6 A7 z" R2 j( X
调试前需要先将程序编译到上述设置的指定位置,可以在命令行启动编译。也可以通过配置.vscode/tasks.json文件设置任务,在 VS code 内启动编译程序[2][3].
- |1 E3 g/ H4 C- {2 {2 g) }1 Obitcoin core 的编译命令[4],注意添加给 configure 添加参数 --enable-debug[5]:2 H- p" u1 S: V# C  E# R
    cd bitcoin/+ T( O( R5 `6 m* e& a. l
    ./autogen.sh
7 e; n4 {: F% X% M1 ^( Y- Z( u) ~    ./configure --disable-wallet --without-gui --without-miniupnpc --enable-debug9 |4 U3 \: Y* J* D. ~- R
    make check1 r( l' @% s0 }7 {- Q; O
由于在 macOS 环境下编译失败,在 Debian 环境下编译成功了,下面以 Debian 环境示范。
. T2 l+ D' L/ Z5 j步骤四:开始调试3 a' y' `8 \2 K
点击行号左侧设置断点:
" z" j9 E6 X% ^7 `% [# S) t) {* J) {8 y  m  P/ d
点击左侧调试工具栏的“开始”按钮,或者按 F5 快捷键,开始调试:2 Z. c3 Y, z! ]" U6 L7 F

' A) T) k9 M4 w点击屏幕上方的 step into 运行下一步:0 u0 x1 l# X' A9 M$ m  A0 Z- c

4 O* m- l. N, @2 n2 m. I3 k  K6 U$ e7 P$ u3 M/ f2 q
20190526更新:9 J4 M8 @# U" s+ @
macOS 环境下编译成功了,只是执行失败了。原因是vscode 调试时会在 shell 运行命令:
! F2 R. t% \2 X! M5 o3 n% Farch -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
0 e3 Q4 {+ K" I$ }0 f, v这个用的是 bash 的语法,而我默认用的是 shell 是 fish。因为语法的不兼容而造成运行失败,只需要将 shell 换成 bash 即可。% I% Q- u. V& V' p' {3 {: h

8 y, O9 o; L$ ]1 W
4 @; J" H8 J/ i' a4 W8 W
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13