Windbg非侵入性调试(用户模式)

如果用户模式应用程序已经在运行,调试器可以非侵入性地对其进行调试。对于非侵入性调试,您没有那么多的调试操作。但是,您可以最小化调试器对目标应用程序的干扰。如果目标应用程序已停止响应,则非侵入性调试非常有用。
在非侵入性调试中,调试器实际上并不附加到目标应用程序。调试器挂起目标的所有线程,并可以访问目标的内存、寄存器和其他此类信息。但是,调试器无法控制目标,因此g(Go)等命令不起作用。
如果尝试执行非侵入性调试期间不允许的命令,则会收到一条错误消息,指出“The debugger is not attached, so process execution cannot be monitored.(未附加调试器,因此无法监视进程执行。)”

选择要调试的进程

您可以通过进程ID(PID)或进程名指定目标应用程序。如果按名称指定应用程序,则应使用进程的完整名称,包括文件扩展名。如果两个进程具有相同的名称,则必须改用进程ID。

通过WinDbg命令行

要从WinDbg命令行无创地调试正在运行的进程,请使用以下语法指定-pv选项、-p选项和进程ID。

windbg -pv -p ProcessID

或者,要通过指定进程名来无创地调试正在运行的进程,请改用以下语法。

windbg -pv -pn ProcessName

通过WinDbg菜单

当WinDbg处于休眠模式时,通过单击“文件”菜单上的“附加到进程”或按F6键,可以无创地调试正在运行的进程。出现“附加到进程”对话框时,选中“非侵入性”复选框。然后,选择包含所需进程ID和名称的行。(也可以在“进程ID”框中输入进程ID。)最后,单击“确定”。

通过调试器命令窗口

如果调试器已处于活动状态,则可以使用“调试器命令”窗口中的.attach-v(attach to process)命令无创地调试正在运行的进程。

如果调试器已经在侵入性地调试一个或多个进程,则可以使用.attach命令。如果此命令处于休眠状态,则可以在CDB中使用,但不能在处于休眠状态的WinDbg中使用。

如果.attach-v命令成功,调试器将在下次调试器发出执行命令时调试指定的进程。由于在非侵入性调试期间不允许执行,因此调试器不能一次非侵入性调试多个进程。这个限制也意味着使用.attach-v命令可能会使现有的入侵调试会话变得不那么有用。

原文地址:https://www.cnblogs.com/yilang/p/12219781.html

时间: 2024-08-27 03:07:38

Windbg非侵入性调试(用户模式)的相关文章

使用Visual Studio调试用户模式进程(Debugging a User-Mode Process Using Visual Studio)

由于本人能力有限,翻译不足之处敬请谅解,欢迎批评指正:[email protected] Visual Studio版本:Visual Studio 2015企业版,中文环境. MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/hh406273(v=vs.85).aspx 在Visual Studio里,你可以使用Windows用户模式调试器 (Windows User Mode Debugger),把一个正在运行的

异步编程(二)用户模式线程同步

基元线程同步构造 多个线程同时访问共享数据时,线程同步能防止数据损坏.不需要线程同步是最理想的情况,因为线程同步存在许多问题. 第一个问题就是它比较繁琐,而且很容易写错. 第二个问题是,他们会损害性能.获取和释放锁是需要时间的. 第三个问题是,他们一次只允许一个线程访问资源,就可能导致其他线程被阻塞,使用多线程是为了提高效率,而阻塞无疑降低了你的效率. 综上所述,线程同步是一件不好的事情,所以在设计自己的应用程序时,应尽可能避免进行线程同步.具体就是避免使用像静态字段这样的共享数据.线程用new

使用单用户模式修改root密码

Linux系统的单用户模式类似于Windows系统的安全模式,允许用户进行一些操作,比如启动一些关键服务.在没有设置grub密码的前提下,我们可以使用单用户模式更改或重置root密码. 1.打开虚拟机 2.开机3秒内按任意键进入编辑菜单 3.编辑菜单中方向键"上"."下"用来选择条目,按"e"编辑命令:按"a"修改内核参数:按"c"进入命令行.这里我们按"e"进入编辑模式. 4.方向键&

linux基础:4、linux运行级别、单用户模式、救援模式

linux运行级别 含义:指的是Unix或Linux等类Unix操作系统下不同的运行模式.运行级别通常分为7等,分别是从0到6 ================================================================================== [[email protected] ~]# tail /etc/inittab # Default runlevel. The runlevels used are: #   0 - halt (Do N

kvm 网络配置之nat、用户模式

接上篇,kvm的网络配置,参考书本:<kvm虚拟化技术 实现以及原理解析> 2. nat模式 nat模式自动获取ip需要dhcp服务,nat功能本身需要ip伪装,既然是一个网络,所以还需要虚拟网桥功能,所以需要的软件如下: dhcp功能:dnsmasq ip伪装:iptables 虚拟网桥:bridge-utils 实现: (1)yum install dnsmasq iptables bridge-utils -y#如果iptables是为内核的netfilter模块提供规则,如果内核不支持

单用户模式修改root密码

单用户模式修改root密码 press any key (看到这个界面的时候键盘上的任意按键以进入GNU GRUB模式) edit CentOS edit kernel 设定从单用户模式启动 boot 在单用户模式中修改密码 单用户模式修改root密码

单用户模式

inux的单用户模式类似windows的安全模式 可以做更改root密码(前提未设置grub密码)等操作 1.启动系统出现倒计时时,按任意键 2.按e键,在启动前编辑命令 3.选择第二行内核,按e键进入编辑状态 4.输入single或s或1,然后回车 5.按b键启动 到这已经进入了单用户模式,此时就可以更改系统的文件然后重启即可

linux的单用户模式与救援模式

[[email protected] ~]#reboot      //重启 按任意键进入 e进入编辑 a更改内核的一些参数 c进入命令行 此时需按e,选择第二项 按e进入如图: 在最后加上: 1(或s.S.single)   回车 按B键重启 runlevel查看当前运行级别S 为单用户模式 输入passwd即可更改root的密码,输入新密码后reboot重启后生效了 救援模式 reboot重启,按F2进入bios设置.用+.-将CD-ROM Drive移到最上面一项.按F10保存,并将关盘载

Solaris之单用户模式

1.TERM 表示终端 vt100 是简单的终端模式 Export TERM=vt100 在此模式下,方向键无效,用字母键 有很多环境变量,PATH .PS1 .TERM 一般在屏幕上写的都是暂时的,只有将其写入到 /etc/profile下面才永久有效.(export TERM=vt100) 2.进入单用户模式 .设置终端.文件位置改动到 /a 下面.修改完之后,重启即可. Vi /a/etc/passwd 首先需要设置vt100 终端模式. 单用户模式界面:方向键失效. 3.在此界面就可以直