使用场景

假如你要开发的程序需要运行在独特的硬件上,比如:服务器,然而这个"独特的硬件"却不能给你装VS,这时候远程调试就登场了.

测试工具/环境一览

Key Value
VS版本 VS2017
被调试程序net框架版本 4.0
目标设备系统 Win7 32位
目标设备IP 168.5.16.42
我自己的ip 192.168.11.106

如果远程机器没密码,需要配置这个

测试代码

static void Main(string[] args)
{
Console.WriteLine("等待调试器...");
//这个属性用来检测本程序是否被调试器附加,开头这一段一直循环,等待调试器附加上来再继续执行代码
while (!System.Diagnostics.Debugger.IsAttached)
{
System.Threading.Thread.Sleep(100);
}
Console.WriteLine("调试器连接成功!"); var a = 123;
var b = 222;
var c = a + b;
Console.WriteLine(c); }



根据以上代码编译出程序

发送相关文件到目标设备

VS安装目录下有个远程调试文件夹,里面有多个版本,根据情况,选择一个,我这里选x86的...

然后是你要调试的程序文件,传输过去.

在目标设备,运行远程调试器

notice1:目标机器,是指被调试的机器,不是我们自己运行VS的机器

notice2:可能需要装net4.5与vc的一些运行库,如果运行不起来,尝试把net框架与vc运行库各个版本都装上试试.



在目标机器运行要调试的程序

在本机VS菜单打开附加调试的界面



1:首先输入远程ip和端口

2:输入要调试的程序名称

3:如果找不到,可以勾选左下角

4:选择程序,附加

如果对方面设备有密码,期间可能会让输入密码.如果没有密码,但是不管怎么试都失败,请参考上面配置安全选项.

断点成功



还可以看到变量内容:

其它细节

附加调试也能附加到本机进程

选择目标计算机的时候,默认本机计算机名称,不用改.

调试本机进程不用运行远程调试器.

可以让VS直接生成程序到远程设备

首先共享远程调试目录,给everyone读写权限:

在本机尝试打开

复制这个路径

粘贴到项目属性的这个地方

编译输出



成功!

调试也支持直接远程启动



不建议这么干,程序在使用AppDomain.CurrentDomain.BaseDirectory等方式获取启动路径的时候得到的会是远程路径:

VS远程调试与附加调试的更多相关文章

  1. [VS工具]远程在IIS附加调试代码

    1.首先在服务器以管理员的方式打开msvsmon.exe(一般这个文件路径:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\ID ...

  2. 选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

    异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. ...

  3. vs2010 未能将脚本调试器附加到计算机上的进程。已附加了一个调试器

    图片: 上周不小心升级了IE10,今天,VS2010报:未能将脚本调试器附加到计算机XXX上的进程iexplore.exe . 已附加了一个调试器”.启动调试失败. 到网上查找解决办法,最后用这个解决 ...

  4. 利用GDB在远程开发机进行调试

    由于一些环境的制约,很多同学都可能需要在开发机上进行调试,但由于开发机资源的限制,在开发机上直接进行本地的GDB环境配置就成了难题,这个时候其实我们可以利用GDB中自带的gdbserver工具就可以进 ...

  5. visual studio 2013 使用IIS Express附加调试MVC5

    1.如何找到调试的站点的进程[由于图片无法上传,就不上传图片了] 2.vs运行的时候,在状态栏会存在一个IIS Express 进程,点击显示所有的应用程序,找到想要调试的程序的PID; 3.附加调试 ...

  6. IE升级到10.0,VS2010启动调试时报“未能将脚本调试器附加到计算机..”

    IE升级到10.0,VS2010启动调试时报“未能将脚本调试器附加到计算机..” 今天,在调试代码时,调试器弹出提示框,报:未能将脚本调试器附加到计算机XXX上的进程iexplore.exe . 已附 ...

  7. pycharm远程linux开发和调试代码

    pycharm是一个非常强大的python开发工具,现在很多代码最终在线上跑的环境都是linux,而开发环境可能还是windows下开发,这就需要经常在linux上进行调试,或者在linux对代码进行 ...

  8. python远程调试及celery调试

    部分来自 from: https://www.xncoding.com/2016/05/26/python/pycharm-remote.html 你是否经常要在Windows 7或MAC OS X上 ...

  9. c# Clipboard.SetDataObject(bmp1) 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常

    c# Clipboard.SetDataObject(bmp1)  在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttri ...

随机推荐

  1. oracle-闪回技术1

    http://blog.csdn.net/lqx0405/article/details/44776737  Oracle Study案例之--基于表空间的时间点恢复(TSPITR) DBPITR 数 ...

  2. out, ref 和 params 的区别和用法

    1. out 参数. 如果你在一个方法中,返回多个相同类型的值,可以考虑返回一个数组. 但是,如果返回多个不同类型的值,返回数组就不可取.这个时候可以考虑使用out参数. out参数就侧重于在一个方法 ...

  3. java对文件操作之实用

    创建文件 package com.pre; import java.io.File; public class WJ { public static void main(String[] args) ...

  4. 深入探讨JavaScript如何实现深度复制(deep clone)

    在代码复用模式里面有一种叫做“复制属性模式”(copying properties pattern).谈到代码复用的时候,很有可能想到的是代码的继承性(inheritance),但重要的是要记住其最终 ...

  5. DP-动态规划算法实例:拿糖果问题

    拿糖果问题 问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉. 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数.这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走 ...

  6. Hanlp分词之CRF中文词法分析详解

    这是另一套基于CRF的词法分析系统,类似感知机词法分析器,提供了完善的训练与分析接口. CRF的效果比感知机稍好一些,然而训练速度较慢,也不支持在线学习. 默认模型训练自OpenCorpus/pku9 ...

  7. chgrp命令详解

    Linux chgrp命令 Linux chgrp命令用于变更文件或目录的所属群组. 在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理.您可以使用chgrp指令去变更文件与目录的所属 ...

  8. SQL Server 数值四舍五入,小数点后保留2位

    1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位. 2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后 ...

  9. openwrt挂载摄像头及视频保存

    一.编译选项的选择: -> Utilities ->usbutils (这个里面包含lsusb的命令,是查看你的摄像头型号的) -> Kernel modules -> I2C ...

  10. Python开发工具Atom

    python基础教程之Python开发工具Atom   本节内容如下: Atom简介 下载安装Atom 安装Python开发包 使用Atom开发Python程序 Atom简介 Atom是Github开 ...