VS2022远程调试+内网穿透

最后更新于 2024-09-18 456 次阅读


前言

软件调试的方法有很多,如打印日志,dump异常信息,调试器调试等.每个方法有优点也有缺点

  1. 打印日志:
    • 优点:
      • 相对简单易用,无需额外的工具或环境。
      • 可以将日志输出到文件或控制台,便于查看。
      • 可以在代码中灵活地插入日志语句,跟踪程序执行流程和变量值的变化。
    • 缺点:
      • 日志输出可能会影响程序性能,尤其是在频繁调用的代码路径上。
      • 对于复杂的问题,可能需要添加大量的日志语句才能进行排查,增加代码的复杂度。
      • 有些问题可能无法通过日志来定位,例如内存泄漏、多线程同步问题等。
  2. Dump 异常信息:
    • 优点:
      • 可以捕获程序运行时的异常信息,包括堆栈跟踪、变量值等,便于后续分析和定位问题。
      • 可以在程序崩溃时自动生成 Dump 文件,避免程序继续运行导致数据丢失。
      • 可以在生产环境中使用,帮助定位线上问题。
    • 缺点:
      • 生成 Dump 文件需要额外的配置和权限,并且可能会导致程序暂停或中断。
      • Dump 文件可能很大,占用磁盘空间,特别是对于长时间运行的程序。
      • Dump 文件的解析和分析需要专门的工具,对于非技术人员来说可能较为困难。
      • 对于加壳程序来说并不友好
  3. 调试器调试:
    • 优点:
      • 可以实时监控程序的运行状态,包括变量值、堆栈跟踪、内存状态等。
      • 可以在程序任意位置设置断点,并在断点处查看和修改变量值,逐步调试程序逻辑。
      • 可以单步执行程序,便于理解程序的运行流程和排查问题。
    • 缺点:
      • 对于生产环境中的问题,可能无法直接使用调试器调试。
      • 调试器调试需要在开发环境中进行,并且可能需要配置和准备符号文件等调试信息。
      • 调试器的使用可能需要一定的技术水平和经验,对于初学者来说可能较为复杂。

总的来说,不同的调试方法各有优缺点,通常需要根据具体的问题和场景选择合适的调试方式。在实际调试过程中,常常会结合多种方法来定位和解决问题。

VisualStudio远程调试

1.首先测试机器到微软官网下载 远程工具Visual Studio 2022 远程工具 根据测试机系统选择下载相应的版本,我这里选择 AMD64版本

image-20240226190948619

下载后,安装即可,然后运行.出现连接画面

image-20240226191207691

接下来 我们需要改一下权限,改为无身份验证.允许任何用户进行调试

image-20240226191310322

image-20240226191329685

出现这两个提示后,如果你是局域网调试那已经完毕了.接下来就是把pdf符号文件传到测试机,运行调试程序.然后开发机器运行VS2022,选择附件进程,输入测试机的内网IP和端口就可以了

image-20240226191800221

但是今天要说的外网调试.如果你的客户机器是公网.那恭喜你直接连接他的公网IP地址和端口就行了.和内网一样.但是如果他是内网,那就需要内网穿透了

内网穿透

需要用到的软件:frp,非常经典,在github上有77.5k的Star,在releases页面下载 frp_0.54.0_windows_amd64.zip,根据系统类型下载相应的版本.

还需要一个有公网IP的服务器用来转发.

公网转发服务器

下载后解压找到frps.toml文件.用文本编辑器或其他编辑器打开,里面默认的绑定端口是7000,一般默认即可.

然后打开cmd,在当前路径下,执行命令 frps.exe -c frps.toml

image-20240226195013654

看到以上提示就成功了.

内网客户机

一样的步骤.下载解压找到frpc.toml配置文件.打开编辑如下

serverAddr = "公网转发IP"
serverPort = 7000

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 4026
remotePort = 6000

serverAddr和serverPort就不解释了吧.公网的IP和端口

localIP:默认就是本机端口 127.0.0.1

localPort:本地监听的端口.VS的调试器端口就是4026.所以这里填写4026

remotePort:远程连接的端口.可以和本地端口一致.

设置完毕之后,启动命令:frpc -c frpc.toml

image-20240226195637865

显示以上信息就成功了,如果连接不上 请检查端口是否开放.因为我是用的腾讯云的服务器,所以要在防火墙里把这两个端口给放开才可以

image-20240226195809256

最后在VS2022 输入公网IP和远程端口 连接就行了

image-20240226200024312

image-20240226200214953

总结

总体来说还是很简单的.如果公网机器带宽很小的话.可能会有点卡顿.对于日常来说足够了.