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

1087人浏览 / 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, 或者

连接后, 选择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 
    
  • 在host主机中安装gdb, gdbserver

    yum install gdb -y
    yum install gdb-gdbserver
    

在容器中编译BE

在host主机中启动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)即可

其他

全部评论