今天在用户的一台机器上遇到了很奇怪的问题。一个按钮点击时概率性的第一次点击无反馈。

因为是概率性的,概率又很低,而当初在设计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远程调试其他电脑上安装的软件的更多相关文章

  1. 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux

    感谢HQSQ的投递一.自由软件基金会的呼吁上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万).我觉得, ...

  2. (windows)一台电脑上安装两个Mysql服务

    原文:https://my.oschina.net/u/1472917/blog/410732 最近需要在一台电脑上安装两个Mysql服务,需求稍微有些奇怪,但确实很必要.本人原本为了本机测试Word ...

  3. 如何在老惠普电脑上安装windows xp系统

    如何在老惠普电脑上安装windows xp系统 前提,老式的紧凑的惠普台式机,装了linux系统,想要装windows xp系统另作他用.但是使用U盘PE怎么也进不了? 解决办法: 1.拆下惠普主机上 ...

  4. .NET/C# 检测电脑上安装的 .NET Framework 的版本

    原文:.NET/C# 检测电脑上安装的 .NET Framework 的版本 如果你希望知道某台计算机上安装了哪些版本的 .NET Framework,那么正好本文可以帮助你解决问题. 本文内容 如何 ...

  5. 在Ubuntu18.04.2LTS上安装电子书软件

    在Ubuntu18.04.2LTS上安装电子书软件 一.前言      很多时候我们想在Ubuntu上阅读电子书,但是Ubuntu上的软件对于这种阅读的界面支持并不好,因此我们需要自己加入喜欢的阅读器 ...

  6. macbook上安装虚拟机软件如何操作?

    很多用户都不太熟悉苹果系统,用惯了Windows之后再过渡到MacOS难免会有些不习惯.为了使我们又可以用回那些熟悉的Windows应用,比较常见的办法就是安装macbook虚拟机.下面小编就教大家一 ...

  7. 通过Mac远程调试iPhone/iPad上的网页(转)

    我们知道在 Mac/PC 上的浏览器都有 Web 检查器这类的工具(如最著名的 Firebug)对前端开发进行调试,而在 iPhone/iPad 由于限于屏幕的大小和触摸屏的使用习惯,直接对网页调试非 ...

  8. 如何通过Chrome远程调试android设备上的Web网站

    网上的帖子很多,但很多都是老版本的,试过了,根本不管用,花了一天时间,终于在本机试验通过了,特记录下来,以备用.有需要的朋友也可以参考.先上一张图,看看PC端chrome上调试的效果: 左边是手机的模 ...

  9. 关于如何在电脑上安装adb来操作手机(Android)的方法及步骤

    1.需要真实的安卓手机: 2.安卓手机需要开启USB调试模式,允许电脑进行调试(各个手机的开启方式可能不同,不知道的自行百度): 3.电脑需要安装ADB驱动,这里提供一个下载地址:https://ad ...

随机推荐

  1. xxl-job使用遇到的问题(二)

    xxl-job使用遇到的问题(二) 关联阅读 xxl-job使用遇到的问题(一) 1.问题现象 最近有个老定时任务迁移到xxl-job的时候,遇到一个小问题.虽然很快解决,但是还是有必要记录一下~ j ...

  2. fragment不适用binding的加载视图方法

    abstract class BaseFragment :Fragment(){ override fun onCreateView( inflater: LayoutInflater, contai ...

  3. 深入剖析 MySQL 自增锁

    之前的文章把 InnoDB 中的所有的锁都介绍了一下,包括意向锁.记录锁...自增锁巴拉巴拉的.但是后面我自己回过头去看的时候发现,对自增锁的介绍居然才短短的一段. 其实自增锁(AUTO-INC Lo ...

  4. python 获取时间范围内日期列表

    python 获取时间范围内日期列表 import datetime def dateRange(beginDate, endDate): dates = [] dt = datetime.datet ...

  5. GO语言面向对象04---接口的继承

    package main import "fmt" type Animal interface { Eat(food string) (shit string) GoDie() } ...

  6. THINKPHP_(3)_TP6中实现多层关联,第一个表关联第二个表查询出的数据,再关联第三个表

    问题: (1)canxunDanwei数据表对应的模型中有一个关联是: public function canxunDanwei() { return $this->belongsTo('\ap ...

  7. ADAS感知算法观察

    ADAS感知算法观察 如果把一台ADAS车辆比作一个人的话,那么激光雷达.毫米波雷达.摄像头.IMU及GPS等等部件就相当于人的眼睛.鼻子.耳朵.触觉及第六感等器官或系统. 环境感知作为无人驾驶的第一 ...

  8. python+selenium基础篇,弹窗处理

    1.弹窗如下图所示 2.处理方法 from selenium.webdriver.common.action_chains import ActionChains#导入鼠标操作包 from selen ...

  9. 『言善信』Fiddler工具 — 14、使用Fiddler进行弱网测试

    目录 1.什么是弱网测试 2.弱网环境的影响 3.弱网环境测试场景 4.使用Fiddler进行弱网测试 (1)Fiddler模拟弱网环境 (2)设置弱网的参数 (3)进行弱网测试对比 (4)恢复设置 ...

  10. 由一次PasswordBox密码绑定引发的疑问 ---> WPF中的附加属性的定义,以及使用。

    1,前几天学习一个项目的时候,遇到了PasswordBox这个控件,由于这个控件的Password属性,不是依赖属性,所以不能和ViewModel层进行数据绑定. 2,但是要实现前后端彻底的分离,就需 ...