VS远程调试与附加调试

使用场景

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

测试工具/环境一览

KeyValue
VS版本VS2017
被调试程序net框架版本4.0
目标设备系统Win7 32位
目标设备IP168.5.16.42
我自己的ip192.168.11.106

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

481370-20180108104317394-2147451384.png

测试代码

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);

}

481370-20180108101645285-1765445933.png
根据以上代码编译出程序

发送相关文件到目标设备

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

然后是你要调试的程序文件,传输过去.
481370-20180108102353597-1273653968.png

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

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

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

481370-20180108103557660-1803471567.png
481370-20180108102926988-256947688.png

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

481370-20180108103639551-832969631.png

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

481370-20180108103952472-474524434.png

481370-20180108104515644-1956259174.png
1:首先输入远程ip和端口
2:输入要调试的程序名称
3:如果找不到,可以勾选左下角
4:选择程序,附加

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

断点成功

481370-20180108111450879-1537507081.png
还可以看到变量内容:
481370-20180108111555613-360618172.png

其它细节

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

选择目标计算机的时候,默认本机计算机名称,不用改.
调试本机进程不用运行远程调试器.

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

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

481370-20180108112425535-1081810.png

在本机尝试打开

481370-20180108112539582-51546527.png

复制这个路径

481370-20180108112635785-1556515089.png

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

481370-20180108112749707-434899210.png

编译输出

481370-20180108112817222-477904694.png
成功!

调试也支持直接远程启动

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

转载于:https://www.cnblogs.com/DragonStart/p/8241895.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值