由于本人能力有限,翻译不足之处敬请谅解,欢迎批评指正:sunylat@163.com

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),把一个正在运行的进程或者产物附加到一个新进程。进程能够运行在正在运行调试器的同一台电脑上,也可以运行在不同的电脑上。

在同一台电脑上附加一个正在运行的进程

  1. 在Visual Studio 2015里,从“调试”菜单,选择“附加到进程”;其它版本Visual Studio从“工具”菜单,选择“附加到进程”。
  2. 在“附加到进程”对话框中,把“传输”设为“Windows User Mode Debugger”,随后设置“限定符”为“Localhost”。
  3. 在“可用进程”列表中,选择要附加的进程。
  4. 点击“附加”按钮。

非侵入性调试

如果你像调试一个正在运行的进程,并且想把对它运行的影响限制在最小程度,你应该非侵入性调试这个进程noninvasively

在同一台电脑上产生一个新进程

  1. 在Visual Studio里,从“工具”菜单,选择“Launch Under Debugger”。
  2. 在"Launch Under Debugger"对话框中,在”Path to the executable file“文本框中输入要附加程序路径信息,你可以在"Arguments"文本框里面输入参数,在"Working directory"文本框中输入工作目录。
  3. 点击"Launch"按钮。

调试器创建的进程(also known as spawned processes)和不是调试器创建的进程表现有一些不同。

代替使用标准堆API,调试器创建的进程使用一种特殊的调试堆。你可以强制一个(spawned processes)使用标准堆来替换调试堆,通过使用 _NO_DEBUG_HEAP 环境变量实现。

另外,因为目标程序是调试器的一个子进程,它继承了调试器的权限,这种权限可能让目标程序能够执行某些在其它时候不允许的行为,例如:目标程序可能会影响到保护进程。

 从分开的电脑上附加一个正在运行的进程

有时候,调试器和要被调试的代码运行在不同的电脑上。运行调试器的电脑叫主机(host computer),运行被调试代码的电脑叫目标机(target computer)。你可以配置目标机从主机上的Visual Studio里。配置目标机也被叫做(provisioning)目标机,更多信息,查看: Provision a computer for driver deployment and testing (WDK 8.1).

配置完目标机之后,你可以在主机的Visual Studio里附加一个正运行在目标机中的进程。

  1. 在Visual Studio 2015里,从“调试”菜单,选择“附加到进程”;其它版本Visual Studio从“工具”菜单,选择“附加到进程”。
  2. 在“附加到进程”对话框中,把“传输”设为“Windows User Mode Debugger”,随后设置“限定符”为目标机。
  3. 在“可用进程”列表中,选择要附加的进程。
  4. 点击“附加”按钮。

注意:如果你使用不同电脑作为主机和目标机,不要在目标机中安装Visual Studio和WDK,如果Visual Studio和WDK安装到目标机上了就支持调试了。

使用Visual Studio调试用户模式进程(Debugging a User-Mode Process Using Visual Studio)的更多相关文章

  1. Visual Studio 调试 —— 附加到进程(远程服务器)

    一般在部署环境下不会有 Visual Studio 开发工具的,所以需要有 Remote Debugger(远程调试器) 才可以进行远程调试. Remote Debugger 获取 方法一:Visua ...

  2. Visual Studio 调试 —— 附加到进程

    第一步:通过管理员方式打开想要附加到进程的项目. 第二步:在 “附加到进程” 对话框中的 “可用进程” 列表中,找到要附加到的程序.我的以 MyProgressTest 为例.选择调试 / 附加到进程 ...

  3. 用Visual Studio调试Windows和驱动程序

    由于本人能力有限,翻译不足之处敬请谅解,欢迎批评指正:sunylat@163.com Visual Studio版本:Visual Studio 2015企业版,中文环境. MSDN原文:https: ...

  4. Visual Studio调试之断点进阶篇

    Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...

  5. android studio 调试技巧(简直太好用)

    android studio 调试技巧(简直太好用) 说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原 ...

  6. 用户模式 Linux 移植

    用户模式 Linux (UML) 是一个有趣的概念. 它被构建为一个分开的 Linux 内核移植, 有 它自己的 arch/um 子目录. 它不在一个新的硬件类型上运行, 但是; 相反, 它运行在一 ...

  7. Visual Studio 调试系列10 附加到正在运行的进程

    系列目录     [已更新最新开发文章,点击查看详细] 可将 Visual Studio 调试器附加到本地或远程计算机上正在运行的进程. 进程运行后,在 Visual Studio 中选择“调试” & ...

  8. Visual Studio Code调试electron主进程

    Visual Studio Code调试electron主进程 作者: jekkay 分类: electron 发布时间: 2017-06-11 14:56  一·概述 此文原出自[水滴石]: htt ...

  9. Visual Studio远程调试监视器(MSVSMON.EXE)的32位版本不能用于调试64位进程或64位转储

    在VS2013中调试Silverlight项目时,提示:无法附加.Visual Studio远程调试监视器(MSVSMON.EXE)的32位版本不能用于调试64位进程或64位转储.请改用64位版本. ...

随机推荐

  1. RabbitMQ在window的搭建

    RabbitMq window 搭建设置过程,网上有些说的不太明白,所以亲自操刀测试过程,参考了很多人的资料,多谢各位大神的宝贵资料第一步:装RabbitMq运行环境,类似一个虚拟机的东东 1.otp ...

  2. C# 属性控件2

    PropertyGrid,.net框架下的一个控件,这是一个软件升级的项目,原来的软件用的是C++,控件用的还是第三方,这次升级到visual studio .net4.0版本,原以为.net的东西用 ...

  3. iOS--cell的重用机制

    对于像我们这样的初学者来说,cell重用机制是很难理解的内容,所以我们不一定非得理解,会用就行. cell的重用机制:当我们使用tableView时,系统只会创建屏幕中显示的cell的个数+1,当ce ...

  4. Python 基礎 - 列表的使用

    如果想要存所有 Marvel's The Avengers 角色的人名,該如何存呢?請用目前已學到的知識來實做- #!/usr/bin/env python3 # -*- coding:utf-8 - ...

  5. cosine similarity

    Cosine similarity is a measure of similarity between two non zero vectors of an inner product space  ...

  6. HDFS的运行原理

    简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Go ...

  7. 实现TCP、UDP相互通信及应用

    实验名称  Socket编程综合实验(1) 一.实验目的: 1.理解进程通信的原理及通信过程 2.掌握基于TCP和UDP的工作原理 3.掌握基本的Socket网络编程原理及方法 二.实验内容 1.掌握 ...

  8. java 环境配置 及java 历史

    知识点概括:1 Java 的历史                              2 JDK 的配置                              3 文件的编译与执行     ...

  9. Android深度探索HAL与驱动开发 第四章 源代码下载和编译

    前面说过Android移植主要就是Linux内核的移植,而Linux内核移植主要是Linux驱动的移植,所以为了开发和测试Linux驱动,有必要学习在Ubuntu Linux下如何搭建两套开发环境:A ...

  10. HDU1532 网络流:最大流之福德福克森算法

    问题描述:约翰是个农民,每次下雨的时候他的庄家总是会被淹没,这就意味着当庄家被水淹后需要很长时间才能重新生长出来,因此,约翰已经建立了一系列排水管道为了使他的庄家尽可能被淹没的最少,也就是说管道的排水 ...