命令字:ba

基本功能:用于在调试器中设置访问断点,也称监视点(Watch Point)。访问断点是一种特殊类型的断点,当程序试图读取或写入特定内存地址时,会触发断点并暂停程序的执行。
基本用法

  1. 设置读访问断点:ba e|r|w|i [filter options] Address
    在指定的 Address 处设置读访问断点,此断点将在程序尝试访问符合条件的内存地址时暂停程序执行。
    r 表示读取访问。
    w 表示写访问。
    e 表示取指令和执行。
    i 表示访问I/O端口,只在X86环境有效。
    bytes表示要匹配的长度,在x86环境最大为8字节。对于ARM64目标,支持最大2GB的监视范围,但要求起始地址是按长度对齐的。
    过滤选项(filter options):
    /p <EPROCESS或者task_struct地址> 匹配进程
    /t <ETHREAD或者task_struct地址> 匹配线程
    /c 匹配CPU,参数指定CPU掩码
    /d 数据匹配,仅对ARM64有效
    /m 数据掩码,仅对ARM64有效
    /M 设置arm64支持的不匹配时命中监视点(Mismatch Watchpoint)
    /1 设置1次性断点

  2. 设置写访问断点:ba w4 Address
    在指定的Address处设置写访问断点,此断点将在程序尝试写入该内存地址时暂停程序执行。

  3. 删除断点:bc BreakpointID
    删除指定BreakpointID的断点。可以使用 bl 命令列出所有断点。

示例

用法描述

请注意,访问断点是强大的调试工具,但在设置过多的情况下可能会引起性能问题。因此,请谨慎使用并确保只设置必要的断点。

命令字:bp

想了解更多请看https://www.nanocode.cn/#/ndbCmds
基本功能:用于在指定的代码地址设置断点,当程序执行到该断点时,会暂停程序的执行并返回到调试器中。
基本用法bp [Address]

示例


命令字:bu

基本功能:用于设置一个临时的非执行断点,即在指定的代码地址处设置一个断点,但不会暂停程序的执行。相反,它会将该断点转换为一条反汇编指令,并在程序执行到该指令时显示相关信息,然后继续执行。
基本用法bu [Address]

示例


命令字:bm

基本功能:用于在指定的模块加载时设置断点。当指定的模块被加载到进程中时,程序会暂停执行,并在调试器中返回到断点所在位置。
基本用法bm [ModuleName]

用法描述

这些命令可以帮助我们控制程序的执行,并在需要时暂停执行以便进行调试。使用断点可以让我们观察程序的状态,检查变量和数据,并跟踪代码的执行流程。在调试和分析过程中,这些命令是非常有用的工具。

请注意,使用这些命令时要谨慎,并确保在适当的位置设置断点,以避免影响程序的正常执行。

想了解更多请看https://www.nanocode.cn/#/ndbCmds

作者:李梓涌  创建时间:2023-08-03 16:11
最后编辑:Zhang Yinkui  更新时间:2025-05-08 15:04