이전 기사에서는 QEMU+GDB를 사용하여 Linux 커널을 디버깅하는 방법을 소개했습니다. 그러나 때로는 GDB를 직접 사용하여 코드를 디버깅하고 보는 것이 그리 편리하지 않습니다. 따라서 이렇게 중요한 경우 vscode의 아티팩트가 누락될 수 있습니까? 이 문서에서는 vscode를 사용하여 커널을 원격으로 디버깅하는 방법을 소개합니다.
이 글의 환경:
저는 개인적으로 Tencent Cloud Server를 사용하기 때문에 가상 머신 설치 과정을 저장합니다. vscode 구성에서 직접 시작하세요.
플러그인 라이브러리에서 Remote-SSH 플러그인을 찾아 설치하세요.
설치가 완료되면 오른쪽 툴바에 추가 기능이 표시됩니다
F1을 눌러 대화 상자를 호출하고, remote-ssh를 입력하고, SSH 구성 파일 열기를 선택하세요.
첫 번째 프로필을 선택하세요
아아아아서버에 로그인하기 위해 개인키 방식을 사용하는데, IdentityFile은 개인키의 절대 경로를 채워줍니다.
구성 후 더하기 버튼을 클릭하여 서버에 로그인하세요
연결하는 동안 멈춰서 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/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}
然后就可以在原来的文件浏览界面,打开远程的文件夹。但是在配置好进行连接的时候,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远程连接,就没有问题了。
安装C/C++插件
依次点击【运行】->【打开配置】,将以下配置复制到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中调试内核,和正常的在windows调试代码是一样的,侧边栏可以看到变量,监视变量,调用堆栈等,非常方便。
大功告成,以后就可以在可视化界面调试内核了!
위 내용은 vscode를 사용하여 Linux 커널을 원격으로 디버깅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!