使用VS远程调试其他电脑上安装的软件
今天在用户的一台机器上遇到了很奇怪的问题。一个按钮点击时概率性的第一次点击无反馈。
因为是概率性的,概率又很低,而当初在设计Log时又设计的是必须重启软件才会生效log开关;
所以这里使用当时release编译出的产物+调试产物配合远程调试来跟踪问题。
需要用到的东西:
一、被调试的机器安装Remote Debugger
在VS安装的电脑里进入以下目录,如果是2017的VS找对应的2017文件夹。我的是Enterprise版本,找对应的文件夹就行。比如preview版本的就找preview等等。32位的程序就拷贝X86的目录到对应的软件机器上,64位的就拷贝x64用于调试。
目录如下:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Remote Debugger
在需要被调试的机器上启动目录下的msvsmon.exe 程序。我保持了默认、点击配置远程调试。并在弹出的UAC中选择是。

右下角图标通知栏就会有一个下图的图标,如果没有,在收起来的图标栏里找一下。这个就是调试工具,用于安装在被调试的机器上。

双击打开调试器。选择工具=》选项=》我关闭了身份验证,选择无身份验证,设置最长时间为999999。当然您也可以设置windows 身份验证,但是我调试时间比较短,而且只是调试的时候打开这个软件,所以我设置了无身份验证,点击确定。

我是在同一个局域网之内的,如果不是同一个局域网,看是否有外网独立IP。或者使用花生壳之类的转发,也可以。
二、在VS中打开对应的代码并附加远程调试的进程。

在对应的代码工程中,点击菜单栏中的调试=》附加到进程=》连接目标=》查找=》找到下面的1个连接=》点击选择

如果列表中没有,请检查是否在一个网络之内。或者是否能访问到这个机器。在cmd下用ping的方式验证一下,是否可以连通IP地址。
如果选择成功之后,进程列表就会刷新,然后选择你需要调试的进程,点击附加,如果没有你要的进程,请在需要被调试的机器上确认是否进程存在,然后再调试的机器上点击刷新。找到需要调试的进程,点击附加。就可以了。
三、在VS中使用模块加载添加断点
PS:VS没有运行DEBUG是没有这个菜单的
VS附加进来之后。如果没有对应版本调试使用的pdb文件是没有办法打断点调试的。
再运行起来的VS中点击调试=》窗口=》模块,用于附加调试。

再这个模块功能中找到你对应的exe和DLL。然后看符号状态,是否是已加载符号,如果不是,则右键点击对应的行,选择加载符号,选择代码对应的pdb文件。一定要注意,代码和应用程序和PDB文件要能对应上,否则没有办法调试。这个可以再每次出版本提交代码的时候。再SVN或者git上做个记录,把pdb产物也提交上去做备份。

通过以上步骤,就可以正常再你的代码中增加断点,并且通过操作调试拉。
我创建了一个C#相关的交流群。用于分享学习资料和讨论问题,欢迎有兴趣的小伙伴:QQ群:542633085
使用VS远程调试其他电脑上安装的软件的更多相关文章
- 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux
感谢HQSQ的投递一.自由软件基金会的呼吁上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万).我觉得, ...
- (windows)一台电脑上安装两个Mysql服务
原文:https://my.oschina.net/u/1472917/blog/410732 最近需要在一台电脑上安装两个Mysql服务,需求稍微有些奇怪,但确实很必要.本人原本为了本机测试Word ...
- 如何在老惠普电脑上安装windows xp系统
如何在老惠普电脑上安装windows xp系统 前提,老式的紧凑的惠普台式机,装了linux系统,想要装windows xp系统另作他用.但是使用U盘PE怎么也进不了? 解决办法: 1.拆下惠普主机上 ...
- .NET/C# 检测电脑上安装的 .NET Framework 的版本
原文:.NET/C# 检测电脑上安装的 .NET Framework 的版本 如果你希望知道某台计算机上安装了哪些版本的 .NET Framework,那么正好本文可以帮助你解决问题. 本文内容 如何 ...
- 在Ubuntu18.04.2LTS上安装电子书软件
在Ubuntu18.04.2LTS上安装电子书软件 一.前言 很多时候我们想在Ubuntu上阅读电子书,但是Ubuntu上的软件对于这种阅读的界面支持并不好,因此我们需要自己加入喜欢的阅读器 ...
- macbook上安装虚拟机软件如何操作?
很多用户都不太熟悉苹果系统,用惯了Windows之后再过渡到MacOS难免会有些不习惯.为了使我们又可以用回那些熟悉的Windows应用,比较常见的办法就是安装macbook虚拟机.下面小编就教大家一 ...
- 通过Mac远程调试iPhone/iPad上的网页(转)
我们知道在 Mac/PC 上的浏览器都有 Web 检查器这类的工具(如最著名的 Firebug)对前端开发进行调试,而在 iPhone/iPad 由于限于屏幕的大小和触摸屏的使用习惯,直接对网页调试非 ...
- 如何通过Chrome远程调试android设备上的Web网站
网上的帖子很多,但很多都是老版本的,试过了,根本不管用,花了一天时间,终于在本机试验通过了,特记录下来,以备用.有需要的朋友也可以参考.先上一张图,看看PC端chrome上调试的效果: 左边是手机的模 ...
- 关于如何在电脑上安装adb来操作手机(Android)的方法及步骤
1.需要真实的安卓手机: 2.安卓手机需要开启USB调试模式,允许电脑进行调试(各个手机的开启方式可能不同,不知道的自行百度): 3.电脑需要安装ADB驱动,这里提供一个下载地址:https://ad ...
随机推荐
- Django(47)drf请求生命周期分析
前言 一般我们写完序列化以后,我们就会开始写视图了,drf中我们一般使用CBV的方式,也就是类视图的方式,最基础的我们会使用from rest_framework.views import API ...
- Django优雅集成MongoDB
Django优雅集成MongoDB 将Django与MongoDB集成 在不更改Django ORM的情况下,将MongoDB用作Django项目的后端数据库.使用Django Admin在Mon ...
- linux中用iptables开启指定端口
linux中用iptables开启指定端口 centos默认开启的端口只有22端口,专供于SSH服务,其他端口都需要自行开启. 1.修改/etc/sysconfig/iptables文件,增加如下 ...
- Lua 业务 脚本
Lua 脚本 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice ...
- OpenResty搭建高性能服务端
OpenResty搭建高性能服务端 Socket编程 Linux Socket编程领域为了处理大量连接请求场景,需要使用非阻塞I/O和复用,select.poll.epoll是Linux API提 ...
- 【RMAN】使用RMAN备份将数据库不完全恢复到指定时间点
RMAN作为Oracle强大的备份恢复工具,可以协助我们恢复数据库到指定时间点,这便是Oracle不完全恢复的一种体现,通过这种方法可以找回我们曾经丢失的数据.这里以找回误TRUNCATE表数据为例给 ...
- application/octet-stream二进制流, springboot项目, postman 测试参数设置
这里使用 原生String接受,之后解析,
- yum install php-bcmath-5.4.16-42.el7.x86_64.rpm安装报错
[root@zabbixserver lnmp_soft]# yum install php-bcmath-5.4.16-42.el7.x86_64.rpm 已加载插件:langpacks, prod ...
- jdk,jre.jvm三者的关系
jdk>jre>jvm jdk=jre+java的开发工具(包括java.exe,javac.exe.javadoc.exe) jre=jvm+java核心类库
- 尼恩 Java高并发三部曲 [官方]
高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪 ...