Visual Studio Code 在.S汇编文件中添加调试断点及功能简介

目录

    • [一、VS Code汇编文件添加断点](#一、VS Code汇编文件添加断点)
    • [二、VS Code断点调试功能简介](#二、VS Code断点调试功能简介)
      • [1. 设置断点](#1. 设置断点)
        • [(1) 单行断点](#(1) 单行断点)
        • [(2) 条件断点](#(2) 条件断点)
        • [(3) 日志断点](#(3) 日志断点)
      • [2. 查看断点列表](#2. 查看断点列表)
      • [3. 调试时的断点控制](#3. 调试时的断点控制)
      • [4. 禁用/启用断点](#4. 禁用/启用断点)
      • [5. 删除断点](#5. 删除断点)
      • [6. 条件断点的使用](#6. 条件断点的使用)
      • [7. 多线程调试](#7. 多线程调试)
      • [8. 远程调试](#8. 远程调试)
      • [9. 调试配置文件](#9. 调试配置文件)

一、VS Code汇编文件添加断点

最近通过VSCode通过QEMU调试汇编代码时,发现不能对 .S 汇编文件里面的代码添加断点,但是 .cpp .h 文件却可以正常添加

于是经过一番摸索,发现可以在在设置里面打开如下选项,就可以愉快的对汇编文件添加断点并调试了

气氛都烘托到这里了,于是简单介绍下VSCode的断点调试功能吧

二、VS Code断点调试功能简介

Visual Studio Code(VS Code)提供了强大的调试功能,下面简单讲讲 VS Code 断点功能

1. 设置断点

在 VS Code 中,通过点击代码行号左侧的灰色区域来设置断点。点击一个行号旁边的灰色区域时,会出现一个红点,表示断点已设置。

(1) 单行断点

点击某一行代码的行号旁边的空白区域,即可设置一个单行断点。

(2) 条件断点

右键点击已设置的断点,可以选择设置条件(例如,在特定变量值为真时暂停)。条件断点可以仅在某些条件满足时暂停程序。

(3) 日志断点

日志断点不会暂停程序,但会在断点触发时输出日志。鼠标移动到行号左边,出现淡红色小点,此时不要左键添加断点,直接按下右键,选择"添加记录点",然后输入想打印的信息

2. 查看断点列表

在左侧的活动栏中,点击"运行和调试"图标(通常是一个播放按钮),然后点击断点(Bugs 图标),可以看到所有已设置的断点,这可以更方便地管理断点,查看断点的状态(启用或禁用)

3. 调试时的断点控制

在调试过程中,VS Code 提供了多个与断点相关的控制按钮:

  • 继续执行:按 F5 或点击"继续"按钮,程序会运行到下一个断点或直到程序结束。
  • 单步跳过:按 F10 或点击"单步跳过"按钮,程序会执行当前行代码,并跳过当前行调用的任何函数。
  • 单步进入:按 F11 或点击"单步进入"按钮,程序会进入当前行调用的函数,并在函数内部停下。
  • 单步跳出:按 Shift + F11 或点击"单步跳出"按钮,程序会跳出当前函数,回到函数调用的地方。
  • 重启程序
  • 停止程序

4. 禁用/启用断点

可以选择禁用某个断点,而不是完全删除它,这样可以临时停用断点,但在以后仍然可以恢复使用。右键点击断点,可以选择"禁用断点"。

5. 删除断点

  • 单个删除:右键点击断点并选择"删除断点"来删除单个断点。
  • 全部删除:在"运行和调试"面板中,可以选择删除所有断点。

6. 条件断点的使用

条件断点允许在满足特定条件时暂停程序。例如,当某个变量的值满足特定条件时,程序才会在此行暂停。设置方法如下:

  1. 右键点击断点,选择"条件"。
  2. 在弹出的对话框中,输入一个表达式(例如:x == 10)。
  3. x == 10 时,程序将暂停。

7. 多线程调试

VS Code 也支持调试多线程程序,支持在调试过程中查看每个线程的状态,并设置断点仅在特定线程中触发。

8. 远程调试

在远程主机上调试程序,设置断点的方法和本地调试一样,只是调试器连接到远程环境

9. 调试配置文件

VS Code 使用 launch.json 文件来配置调试器的行为,可以在 .vscode 文件夹中编辑 launch.json,为不同的调试场景设置断点、环境变量、调试端口等

下面的 launch.json 配置了通过连接QEMU进行调试

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/os.elf",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "x86_64-elf-gdb",
            "miDebuggerServerAddress": "127.0.0.1:1234",
            "targetArchitecture": "x86",
            "stopAtConnect": true,
            // 启动gdb之前,做些准备:写映像文件、启动qemu
            "windows": {
                "preLaunchTask": "启动qemu", // 仅在windows下可自动运行
            },
            "linux": {
                "preLaunchTask": "启动qemu", 	// 仅在windows下可自动运行
                "miDebuggerPath": "gdb", 		// linux下的特殊配置
            },
            "customLaunchSetupCommands": [],
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
                // 设置体系结构: i8086,方便以16位方式进行反汇编
                {
                    "description": "设置体系结构",
                    "text": "-gdb-set arch i8086",
                    "ignoreFailures": true
                }
            ],
            // gdb连接后的设置
            "postRemoteConnectCommands": [  
                {
                    "description": "运行至0x7c00",
                    "text": "-exec-until *0x7c00",
                    "ignoreFailures": false
                },
            ],
        }
    ]
}
相关推荐
小彭律师2 小时前
使用VSCode在Windows 11上编译运行项目
ide·windows·vscode
love530love11 小时前
好消息!PyCharm 社区版现已支持直接选择 WSL 终端为默认终端
linux·ide·人工智能·windows·python·pycharm
明晚十点睡13 小时前
Vscode (Windows端)免密登录linux集群服务器
linux·服务器·vscode
一起喝芬达201016 小时前
cursor平替,试试 vscode+cline+openrouter 的方案,还能自定义 mcp-server 教程大纲
ide·ai·ai编程
工具罗某人16 小时前
IDEA 2024 版本配置热部署
java·ide·intellij-idea
兮动人20 小时前
VSCode怎么同时打开多个页面
ide·vscode·编辑器
nathan052920 小时前
javaer快速从idea转战vscode
java·vscode·intellij-idea
SunTecTec1 天前
美化IDEA注释:Idea 中快捷键 Ctrl + / 自动注释的缩进(避免添加注释自动到行首)以及 Ctrl + Alt + l 全局格式化代码的注释缩进
java·ide·intellij-idea
胖大和尚1 天前
eclipse常用快捷键
ide
柯南二号1 天前
Android Studio根目录下创建多个可运行的模块
android·ide·android studio