[Debug BE环境搭建] 如何使用VSCode Debug BE ( mac为例, windows类似)

数据分析

2021-01-21

25

0

目标

A机器上使用vs code远程使用GDB调试B机器上的BE代码

在A机器上安装Visual Studio Code Insiders和插件

  • 下载并安装: Visual Studio Code Insiders
  • 安装vs code插件 “Remote - Development”
  • 在vs code配置中搜索 “remote.SSH”, 勾选 remote.SSH.showLoginTerminal (或者直接在 settings.json 里添加一行 "remote.SSH.showLoginTerminal": true 也可)
  • 安装插件
    • C/C++ IntelliSense, debugging, and code browsing
    • autoconf
    • Bookmarks

在A机器上配置ssh免密登录B机器(自行处理)

  • 设置ssh免密key
  • 在A机器上配置B的host免密登录
    ```
    编辑内容: vim /Users/用户名/.ssh/config

Host doris-d66-debug
HostName B机器IP
User root
ServerAliveInterval 30
ControlMaster auto
ControlPath /tmp/master-%r@%h:%p
ControlPersist yes
Port 57322
IdentityFile ~/.ssh/id_rsa


### 在A机器上配置vs code远程访问B机器中的BE代码
在 VSCode 主界面 ctrl+shift+p 选 Remote.SSH: Connect to host, 输入 root@ip, 或者
![](http://dorisdb.xyz/attachment/20201214/c033afd745064dc695b125d83fb5c667.png)
![](http://dorisdb.xyz/attachment/20201214/643d16c54a0b4e738d4de8e84ec7e9c5.png)

连接后, 选择doris源码根目录, 打开即可. 

### 在B机器上搭建BE编译环境
- 安装docker
- pull编译镜像
docker pull registry.cn-beijing.aliyuncs.com/whitetiger/doris-debug-env:1 
```
  • 运行一个docker容器

       docker run -it --name debug-doris --net=host --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /data:/data -v /opt:/opt -d doris/be-debug:1
    
  • 安装gdb, gdbserver

      yum install gdb -y
      yum install gdb-gdbserver
    

    在容器中编译BE

  • 编译方法: /article/how_to_build_doris

在容器中启动BE

  • 进入doris源码目录/output/be/conf, 配置BE. 注意这里的BE端口不要与docker宿主机的端口冲突
  • 进入容器, 设置环境变量

      docker exec -it debug-doris bash
    
      export DORIS_HOME=doris源码目录/output/be
      export UDF_RUNTIME_DIR=${DORIS_HOME}/lib/udf-runtime
      export LOG_DIR=${DORIS_HOME}/log
      export PID_DIR=${DORIS_HOME}/bin
      mkdir ${DORIS_HOME}/storage
    
  • 是使用gdbserver启动BE
          cd doris源码目录/output/be/lib
          gdbserver 127.0.0.1:自定义GDB启动端口 ./palo_be
    

配置A机器的vscode启动文件

vim ./.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gdb Remote Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "B机器容器中Doris源码目录与/be/output/lib/palo_be",
            "args": [],
            "linux": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb",
                "miDebuggerServerAddress": "B机器ip:GDB启动端口",
            },
            "cwd": "${workspaceFolder}",
        }
    ]
}

调试启动(F5)即可

其他

欢迎添加微信,互相学习↑↑↑ -_-

发表评论

全部评论:0条

白老虎

programming is not only to solve problems, ways to think