zgcbj 2024-08-27 10:01 采纳率: 100%
浏览 6
已结题

rust 调试断不下来

rust 编译的c程序,调试时瞬间退出,vscode也抓不到异常,怎么解决?确定时debug版本,用gdb可以给main下断点,但是gdb退出的时候栈帧没有符号。

  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-08-27 22:03
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    首先,确保你的Rust程序是在调试模式下编译的。在Cargo.toml文件中,将[profile.dev]部分的opt-level设置为0,如下所示:

    [profile.dev]
    opt-level = 0
    

    然后,使用cargo build命令重新编译你的项目。这将生成一个带有调试信息的可执行文件。

    接下来,你需要在VSCode中配置调试器。按照以下步骤操作:

    1. 打开VSCode的扩展面板,搜索并安装"Rust (rls)"扩展。
    2. 在VSCode中打开你的Rust项目文件夹。
    3. 点击左侧边栏的“运行和调试”图标(或按下Ctrl+Shift+D快捷键)。
    4. 点击“创建launch.json文件”链接,选择“Rust”作为环境。
    5. 在生成的launch.json文件中,找到configurations数组,并添加以下配置:
    {
        "type": "lldb",
        "request": "launch",
        "name": "Debug executable 'your_project_name'",
        "cargo": {
            "args": [
                "build",
                "--bin=your_project_name",
                "--package=your_package_name"
            ],
            "filter": {
                "name": "your_project_name",
                "kind": "bin"
            }
        },
        "args": [],
        "cwd": "${workspaceFolder}",
        "preLaunchTask": "cargo build"
    }
    

    注意替换your_project_nameyour_package_name为你的项目名称和包名称。

    1. 保存launch.json文件。
    2. 现在你可以在VSCode中设置断点,然后点击左侧边栏的“运行和调试”图标中的绿色三角形按钮来启动调试会话。

    如果你仍然遇到问题,可以尝试使用rust-gdb工具替代lldb。首先,确保你已经安装了rust-gdb。然后,修改launch.json文件中的配置,将type字段更改为"external",并添加"program"字段,指向你的可执行文件。例如:

    {
        "type": "external",
        "request": "launch",
        "name": "Debug executable 'your_project_name'",
        "program": "${workspaceFolder}/target/debug/your_project_name",
        "args": [],
        "cwd": "${workspaceFolder}",
        "preLaunchTask": "cargo build"
    }
    

    希望这些步骤能帮助你解决问题。如果问题仍然存在,请检查你的代码和依赖项,确保没有其他错误导致程序异常退出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 创建了问题 8月27日

悬赏问题

  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。