当前位置:首页 > 每日看点 > 正文内容

vs的调试器有办法使用和windbg一样的命令行操作么?

卡卷网1年前 (2024-11-30)每日看点262

WinDbg捉虫笔记(三)之 WinDbg配置远程调试
1、为什么需要远程调试
某些特殊的场合需要远程调试,如:
①调试特殊的程序,比如在调试全屏程序,内核。
②需要别人帮助调试或者帮助别人调试。比如由于商业性质不能直接给你pdb和源代码。
③还有一类就是在指定的机器上复现,此时dump也不好使。(下一篇文章我会介绍)
2、支持的远程协议有哪些?
从微软的官方文档来看,协议很丰富。有TCP,PIPE,SSL,COM,1394。其中最古老的要属1394,至今某些台式机器仍然保留这一接口。
3、介绍tcp协议方式
在这篇文章,我主要介绍tcp的方式。
注意:在配置远程调试,须保持两端的WinDbg版本一致。
我们先介绍下模式,既是远程调试,那就分为server端和client端。
举个例子:我现在有个疑难杂症搞不定,需要同事帮忙解决。我需要开启WinDbg的server模式,那我就是server端。同事连接进来就是client端。
有两种方式启动远程调试。这两种方式各一点差异,一个需要懂点WinDbg知识,一个就是类似小白模式。
3.1 小白模式
在安装WinDbg的目录中找到DbgSvr程序。
比如我这里:

vs的调试器有办法使用和windbg一样的命令行操作么?  第1张


注意看这里有很多的dbgsrv.exe,你该选择哪个呢?这是有讲究的。
如果你是要调试x86程序,那就选择上面红框中的dbgsrv.exe。如果是调试x64程序,那就需要选择amd64目录下的程序。
我曾经在这里吃过亏,一调试就报如下的错误。

vs的调试器有办法使用和windbg一样的命令行操作么?  第2张

管理员的权限打开cmd,进入此目录,如果不想每次这么麻烦就可以把此路径加入环境变量path中。下次开机就可以生效。

vs的调试器有办法使用和windbg一样的命令行操作么?  第3张


可以输入dbgsrv.exe /?,查看dbgsrv的简单使用方式。
在输入dbgsrv.exe -t tcp:port=18888,要是没有任何的错误表示成功,等待client端连接。

vs的调试器有办法使用和windbg一样的命令行操作么?  第4张

在client端打开WinDbg,菜单栏中选择File打开,出现如下画面:
按照上面的格式输入tcp:server:192.178.2.10, port=18888,这里其实还加上密码参数更为安全,最后点击OK

vs的调试器有办法使用和windbg一样的命令行操作么?  第5张

如果连接没有问题就会出现如下的画面,我们在server端再起一个notepad进程。

vs的调试器有办法使用和windbg一样的命令行操作么?  第6张


vs的调试器有办法使用和windbg一样的命令行操作么?  第7张


3.2 入门模式
比如我现在正在调试notepad.exe,在server端的WinDbg命令行输入.server tcp:port=18888,password=abcc
0:009> .server tcp:port=18888, password=abcc
Server started. Client can connect with any of these command lines
0: <debugger> -remote npipe:Pipe=DbgX_10353c0f6e1d413fb8a6a0f047ef46eb,Password=*,Server=192.168.2.10
1: <debugger> -remote tcp:Port=18888,Server=192.168.2.10

在client端,打开WinDbg,输入tcp:server=192.178.2.10,port=18888, password=abcc,这里需要把ip地址换成你自己的。

vs的调试器有办法使用和windbg一样的命令行操作么?  第8张


成功之后在client端显示的画面:
0:009> .server tcp:port=18888, password=abcc
Server started. Client can connect with any of these command lines
0: <debugger> -remote npipe:Pipe=DbgX_10353c0f6e1d413fb8a6a0f047ef46eb,Password=*,Server=192.168.2.10
1: <debugger> -remote tcp:Port=18888,Server=SIH-D-697.cn.net.ntes
192.168.2.10 (tcp [::ffff:192.168.2.10]:51941) connected at Mon Aug 5 20:01:37 2024

server端显示的画面:
0:009> .server tcp:port=18888, password=abcc
Server started. Client can connect with any of these command lines
0: <debugger> -remote npipe:Pipe=DbgX_10353c0f6e1d413fb8a6a0f047ef46eb,Password=*,Server=192.168.2.10
1: <debugger> -remote tcp:Port=18888,Server=SIH-D-697.cn.net.ntes
192.168.2.10 (tcp [::ffff:192.168.2.10]:51941) connected at Mon Aug 5 20:01:37 2024

之后你在client输入的命令就会同步到server端的WinDbg。
此时可以在client端的WinDbg输入k:
0:009> k
# Child-SP RetAddr Call Site
00 000000f9`fb1ffd38 00007fff`9e07cafe ntdll!DbgBreakPoint
01 000000f9`fb1ffd40 00007fff`9d127374 ntdll!DbgUiRemoteBreakin+0x4e
02 000000f9`fb1ffd70 00007fff`9dffcc91 KERNEL32!BaseThreadInitThunk+0x14
03 000000f9`fb1ffda0 00000000`00000000 ntdll!RtlUserThreadStart+0x21

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/11/2185.html

分享给朋友:

相关文章

我觉得华为Mate60Pro明明配置不高,为什么还是有那么多人买呢?

我也好奇啊,所以闲聊时,我问了我们公司的副总,我说Mate60pro配置这么拉胯你怎么还买啊?他一脸疑惑的看着我,配置?什么配置?我这手机信号挺好的啊?我们总经理用的是去年华为出的折叠手机,花了一万多,我也想问问他同样的问题,但奈何一直没有...

腾讯云为何在云服务市场败给了阿里云?

IDC领域,2010年以前,万网、新网互联、新网,三家公司瓜分天下,其中万网市场份额最高,排名第一。当时,万网的域名是http://www.net.cn,通过该域名就可以判断万网的地位。2010年阿里云成立,直接收购了万网,大量用户直接流向...

在追求家居美学的过程中,如何选择一款电视机,使其既具备出色的音画质又能与家居装饰相得益彰?

在追求家居美学的过程中,如何选择一款电视机,使其既具备出色的音画质又能与家居装饰相得益彰?

先看照片,你就说美不美吧?我家这个40平的客厅东西放得不少,其中最提升观感的是各种灯光,在这么多灯光中,是不是第一眼视觉中心就落在了电视上?没错,因为这电视是非常特别的环景光电视,与显示器的神光同步一样,会随着画面的变化而变化不同的光效,它...

有哪些好玩到爆的小网站?推荐?

有哪些好玩到爆的小网站?推荐?

1、Poki 免费在线游戏https://poki.com/zh免费在线小游戏网站。上千款在线游戏,完全免费,无需登录,打开就能玩。2、http://YORG.iohttps://yorg.io超耐玩的塔防游戏。搭建自己的防御基地、开采资源...

是什么原因让你一定要用 iPhone?

是什么原因让你一定要用 iPhone?

1、不用清理内存,iPhone真的可以开机用上一年,你根本不用关注期间打开过什么软件。2、支持的频段足够多,天天在国内走动倒是无所谓,很多Android手机一旦出去了,就会发现很多运营商接入都是问题,更不用说各种本土化的服务了。3、屏幕素质...

测试用例是怎么写的?

测试用例是怎么写的?

测试用例对于测试人员而言,虽说是最最基础的技能,但却非常重要。测试用例是支撑我们在测试道路上进一步学习其他测试技能的基本功。那测试用例如何撰写,完整来说应该包含两部分内容:内容1: 测试用例撰写(按照八大要素);内容2: 测试用例(测试点)...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。