• 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命令可能会使现有的入侵调试会话变得不那么有用。

  • 相关阅读:
    个人学习代码保存:例8.在存储过程中使用简单的事务处理
    个人学习代码保存:例6.多文件上传
    泛型 .net学习日记
    .net 点击刷新验证码问题
    个人学习代码保存:例11.读取Excel文件中的数据
    个人学习代码保存:例12.读取GridView文件中的数据到Excel文件
    个人学习代码保存:例5.利用标准FileUpload单文件上传
    Android视频采集
    Android视频采集+H264编码
    实时传输协议(RTP)和实时控制协议(RTCP)
  • 原文地址:https://www.cnblogs.com/yilang/p/12219781.html
Copyright © 2020-2023  润新知