windows下使用gdb+vscode调试rust程序

跨链技术践行者 跨链技术践行者     2022-12-16     151

关键词:

在Windows下调试Rust程序,我就在这里写个简单的指南(以Rust 1.10为例)。

本文参考Stackoverflow
http://stackoverflow.com/questions/33570021/how-to-set-up-gdb-for-debugging-rust-programs-in-windows

Rust目前支持使用LLDB和GDB调试(貌似LLVM工具链越来越受欢迎),可惜LLDB目前没有Windows版(后面会有的,耐心等待),所以在Windows下调试Rust程序,你需要GDB。

一、下载GDB
使用TDM-GCC的GDB(需要支持Python扩展,MinGW64的GDB貌似不支持)
https://sourceforge.net/projects/tdm-gcc/files/GDB/
我是64位系统,所以下载的是GDB64,32位的请下载GDB32

二、解压GDB
压缩包里有bin、gdb64、share,直接解压到Rust安装目录(我的是D:\\Programming\\Rust,下面以此为例)。

三、配置rust-gdb
下载rust源代码,将src目录下的etc目录解压到D:\\Programming\\Rust\\lib\\rustlib目录下。
修改D:\\Programming\\Rust\\gdb64\\bin目录下的gdbinit,将下面代码加入gdbini末尾:
python
print "---- Loading Rust pretty-printers ----"

sys.path.insert(0, "D:/Programming/Rust/lib/rustlib/etc")
import gdb_rust_pretty_printing
gdb_rust_pretty_printing.register_printers(gdb)

end

四、测试
执行gdb,如果没有什么错误且输出:
---- Loading Rust pretty-printers ----
说明gdb配置好了。

五、使用gdb
写一个hello world:
notepad hello.rs
rustc -g hello.rs
gdb hello.exe
 

命令行实用GDB调试Rust程序




六、配置VS Code
安装Native Debug插件(https://marketplace.visualstudio.com/items?itemName=webfreak.debug
ext install debug

用Cargo创建一个工程
cargo hello --bin

用VS Code打开该工程,然后点击左侧面板上的调试按钮,调试配置中类型选择GDB。
然后修改Native Debug插件生成的launch.json文件,将target指向Debug版本的exe程序。launch.json文件大致如下:

"version": "0.2.0",
"configurations": [

"name": "Debug",
"type": "gdb",
"request": "launch",
"target": "./target/debug/hello.exe",
"cwd": "$workspaceRoot"

]


然后在源文件中设断点,开始调试吧。
 

最终界面

使用 GDB 在 Windows 下调试 DLL

】使用GDB在Windows下调试DLL【英文标题】:DebugDLL\'sunderWindowswithGDB【发布时间】:2009-08-2011:20:33【问题描述】:我有一些项目由几个DLL组成,这些DLL已使用MinGW编译并带有调试信息,另一个项目具有使用这些DLL(也使用MinGW编译)... 查看详情

在vscode中使用gdb调试

参考技术A之前一直使用的是linux终端的gdb,因为调试的对象是riscv,而我们使用的环境是x86的,所以必须用emulator。目前的工作是对assembler进行移植,并利用自己的编写的c++文件为完成测试,并不需要用到riscv环境,直接使用x86的... 查看详情

Windows下CDT GDB调试

】Windows下CDTGDB调试【英文标题】:CDTGDBDebugunderWindows【发布时间】:2011-03-2015:34:35【问题描述】:我尝试在Windows7下将CDT与MinGW一起使用。它可以毫无错误地运行程序;但是,当我开始调试时,它提示了以下消息。我不知道问题... 查看详情

windows下使用mingw/gdb无法调试eclipse helios cdt上的小程序,控制台死机

】windows下使用mingw/gdb无法调试eclipsehelioscdt上的小程序,控制台死机【英文标题】:can\'tdebugsmallprogramoneclipsehelioscdtusingmingw/gdbunderwindows,consolefreezes【发布时间】:2011-08-2515:58:39【问题描述】:我一直在尝试使用EclipseCDT来做一些c+... 查看详情

windows下用vscode调试rust

...ols),安装后运行Run->StartDebugging会出现C++(GDB/LLDB)与C++(Windows)  2、根据rust用的版本,如果用的是x86_64-pc-windows-msvc,调试时选择C++(Windows),如果是x86_64-pc-windows-gnu,调试时选择C++(GDB/LLDB)。选择C++(Windows)时,会出现如下... 查看详情

windows下配置vscode,写c++,使用opencv库和openmvg依赖库:windows下,vscode配置c++环境(代码片段)

windows系统下VScode配置C++环境背景简单说明按理说VisualStudioCode只是个编辑器,不含编译器、链接器,直接用VisualStudio(IDE,集成开发环境,集成了编辑器、编译器以及链接器)写C++更方便,... 查看详情

qemu+gdb+vscode的一些神奇调试tricks

可以看到数组内容 查看详情

自己动手写一个操作系统——vscode工程调试配置

...ode会自动跳转到下一条要执行的指令处由于我们需要频繁使用qemu+gdb调试,这套配置能够帮助我们极大地提高调试效率(不然我们需要手动运行qemu、运行gdb、连接、打断点、查看代码等操作)。 查看详情

使用vscode调试php底层c源码(代码片段)

...篇文章是基于macOS,可能在编译php源码之前的步骤对使用windows的师傅没啥可参考的。windows下比较麻烦,主要是在编译php源码这一步,最方便的办法是用docker来远程调试。具体可以参考这篇文章vscode远程调试php底层代码。使用p牛... 查看详情

使用vscode从零开始开发调试.netcore1.0

...轻量级的跨平台Web集成开发环境,可以运行在Linux,Mac和Windows下!从零开始开发调试.NETCore1.0,让你更好的了解.NETCore应用程序。本篇VSCode开发教程是在window 查看详情

linux调试工具gdb的使用

前言在前文,我们已经讲解了vim工具以及gcc/g++的使用,我们可以进行编写代码以及编译代码了,但是还没有学习如何在Linux下对代码进行调试,通过本章的学习,将学会如何使用gdb对代码进行调试。gdb的安装:sudoyuminstall-ygdb(... 查看详情

vscode怎么调试c语言调试步骤

...件夹,我们这里新建一个Test文件夹并打开test,打开后:使用VScode运行调试C/C++,在左侧打开的目录中新建一个main.cpp文件。2、新建后点左侧的调试按钮(英文:Debug),可以看到,目前没有调试配置。3、这时我们需要配置自己... 查看详情

使用gdb+gdbserver调试应用程序(代码片段)

目录一、gdb基本使用1.启动gdb2.gdb交互式命令二、gdb+gdbserver实现远程调试一、gdb基本使用?GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。对于一名Linux下工作的c++程序员,gdb是必... 查看详情

vscode使用新体验(代码片段)

...一些学的不长的语言。其实VSCode下一个C++的插件,不需要使用他的调试工具就可以很方便的编译运行C++。调试的话稍微一改它默认的配置文件就可以。例如把extrenalConsole改为true,把gdb的目录改一改。//使用IntelliSense了解相关属性... 查看详情

一文掌握vscode远程调试python代码(代码片段)

...在《一文掌握vscode远程gdb调试》文章中,介绍了如何使用vscode调试c/c++代码,作为该文的姊妹篇,本文对调试python代码的方法做一个整理。1环境配置远程连接的方法同 《一文掌握vscode远程gdb调试》中的第1节相... 查看详情

linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件

交叉编译gdb和gdbserver1、下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本。当然,凡事无绝对。我们以gdb-7.2.tar.bz2这个文件为例。2、解压缩:$tarjxvfgdb-7.2.tar.bz2注:小技巧:Linux下... 查看详情

linux下gdb使用整理记录

1.创建cpp文件:vimsourcefile.cpp2.生成可执行文件:g++-gsourcefile.cpp-oexename------据说是要必须加上-g参数,否则不可调试3.启动调试:输入gdb(滚蛋吧)进入gdb环境4.输入fileexename (告诉gdb要调试了)5.输入l(list)查看代码,回车重复上一条... 查看详情

使用vscode对c进行调试

最近在学习C语言。知道vscode支持对c语言的代码的调试,就想试试。然后找了教程:https://code.visualstudio.com/docs/languages/cpphttp://www.2cto.com/kf/201606/516207.html照着做都没成功。打了断点却无法命中。然后想到很有可能是因为gcc编译代... 查看详情