>  기사  >  시스템 튜토리얼  >  vscode를 사용하여 Linux 커널을 원격으로 디버깅

vscode를 사용하여 Linux 커널을 원격으로 디버깅

WBOY
WBOY앞으로
2024-02-05 12:30:121308검색

머리말

이전 기사에서는 QEMU+GDB를 사용하여 Linux 커널을 디버깅하는 방법을 소개했습니다. 그러나 때로는 GDB를 직접 사용하여 코드를 디버깅하고 보는 것이 그리 편리하지 않습니다. 따라서 이렇게 중요한 경우 vscode의 아티팩트가 누락될 수 있습니까? 이 문서에서는 vscode를 사용하여 커널을 원격으로 디버깅하는 방법을 소개합니다.

이 글의 환경:

  • 윈도우10
  • vscode
  • 우분투 20.04

저는 개인적으로 Tencent Cloud Server를 사용하기 때문에 가상 머신 설치 과정을 저장합니다. vscode 구성에서 직접 시작하세요.

vscode 플러그인 설치

원격-ssh

플러그인 라이브러리에서 Remote-SSH 플러그인을 찾아 설치하세요.

vscode를 사용하여 Linux 커널을 원격으로 디버깅

설치가 완료되면 오른쪽 툴바에 추가 기능이 표시됩니다

vscode를 사용하여 Linux 커널을 원격으로 디버깅

F1을 눌러 대화 상자를 호출하고, remote-ssh를 입력하고, SSH 구성 파일 열기를 선택하세요.

vscode를 사용하여 Linux 커널을 원격으로 디버깅

첫 번째 프로필을 선택하세요

vscode를 사용하여 Linux 커널을 원격으로 디버깅아아아아

서버에 로그인하기 위해 개인키 방식을 사용하는데, IdentityFile은 개인키의 절대 경로를 채워줍니다.

구성 후 더하기 버튼을 클릭하여 서버에 로그인하세요

vscode를 사용하여 Linux 커널을 원격으로 디버깅

오류: SSH 호스트 XX 설정: scp

를 사용하여 호스트에 VS Code Server 복사 중

연결하는 동안 멈춰서 SSH 호스트 XX 설정: scp를 사용하여 호스트에 VS 코드 서버 복사를 기다리고 있습니다.

이유

원격 서버의 홈 디렉터리~/.vscode-server/bin/commit_id/vscode-servlet.tar.gz가 다운로드되지 않았기 때문입니다.

commit_id는 vscode [도움말]->[터미널]에서 확인할 수 있습니다.

솔루션

그런 다음 vscode-servlet.tar.gz를 수동으로 다운로드하겠습니다. 아래 링크를 통해 다운로드하세요.

으아악

다음 명령줄을 실행하세요. ~/.vscode-server/bin 디렉터리의 모든 내용을 삭제하세요.

으아악

디렉토리가 없으면 생성하세요*. ~/.vscode-server/bin 으아악

다운로드한 압축 패키지 vscode-server-linux-x64.tar.gz를

디렉터리에 넣습니다. ~/.vscode-server/bin

다음 세 줄의 명령을 실행합니다. 여기서

는 2단계에서 기록한 commit_id로 바꿔야 합니다.${commit_id}

cd ~/.vscode-server/bin
tar -zxf vscode-server-linux-x64.tar.gz
mv vscode-server-linux-x64 ${commit_id}

报错:Permissions for ‘vscode_rsa’ are too open.

然后就可以在原来的文件浏览界面,打开远程的文件夹。但是在配置好进行连接的时候,VScode的终端报错了:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: UNPROTECTED PRIVATE KEY FILE!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'vscode_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "vscode_rsa": bad permissions

根本原因是私钥的权限问题。这要是在Linux里,直接使用chmod,就可以修改,修改为644即可,但是windows,就稍微麻烦点。

在私钥上右击选择属性,然后选择【安全】选项卡,然后点击下面的【高级】按钮,然后在新弹出的窗口下方点击【禁用继承】,然后点击继承那个按钮上面的【添加】按钮重新将当前window登录用户设置为私钥的所有者,并勾选所有权限。最后跟下面一样即可:

vscode를 사용하여 Linux 커널을 원격으로 디버깅

这时再次打开VScode远程连接,就没有问题了。

C/C++

安装C/C++插件

vscode를 사용하여 Linux 커널을 원격으로 디버깅

依次点击【运行】->【打开配置】,将以下配置复制到launch.json中。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "kernel-debug",
            "type": "cppdbg",
            "request": "launch",
            "miDebuggerServerAddress": "127.0.0.1:1234",
            "program": "${workspaceFolder}/vmlinux",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "logging": {
                "engineLogging": false
            },
            "MIMode": "gdb",
        }
    ]
}

然后在main函数中,打上两个断点,在服务器上开启QEMU,F5即可开启调试。

vscode를 사용하여 Linux 커널을 원격으로 디버깅

在vscode中调试内核,和正常的在windows调试代码是一样的,侧边栏可以看到变量,监视变量,调用堆栈等,非常方便。

vscode를 사용하여 Linux 커널을 원격으로 디버깅

大功告成,以后就可以在可视化界面调试内核了!

vscode를 사용하여 Linux 커널을 원격으로 디버깅

위 내용은 vscode를 사용하여 Linux 커널을 원격으로 디버깅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제