您的位置:首页 > 其它

VS调试技巧 之 attach to process

2014-10-21 20:01 330 查看
Attach toprocess:用于和进程绑定,方便调试。
 
你有没有这样的经历:按F5开始调试时,程序需要好长时间才能启动,比如可能需要加载比较大的文件或资源,这时候你可能需要等很长时间,而下次调试时又不得不等很长时间以待程序启动。其实这浪费了很多的时间。那有没有比较好的解决方法呢,有,就是VS提供的Attach to Proces 的功能。你只要把待调试的程序启动,然后把程序和源码attach一下就可以调试了,程序会在你在源码中设置的断点处停下来,当你调试完成后,只要不关闭你的进程,下次还可以接着调,不必再把程序开启,少了很多的等待时间。
具体做法是:
先把你的待调试的进程开启起来,然后在VS中从TOOL菜单中选中attachto process,弹出如下对话框:



Tansport选中default表示和本机上的进程绑定,avaliableprocess列出了本地机器上现在运行的进程,选择你要调试的进程,然后点击attach就完成了绑定,接下来就可以开始调试了。
另外,attach to process也可以用于远程调试,只要更改Tansport的选项就可以了,非常方便。
 
--======================================--
 
按Ctrl+F5运行测试程序时,弹出一个错误窗口问你是要“终止、重试、忽略”,却没写出错的地方,让人很是郁闷。按F5进行调试,往往错误又不出现了。
 
对于这种出现概率较少的bug,当在运行时弹出那个对话框时可以先别急着选择那三个选项,点击visual studio菜单栏的debug->Attach to Process,开始对进程调试。
 
而此时一般进程正处于running状态,无法进行调试,点击debug工具栏的暂停按钮,就是两条坚杠的那个,然后此时编辑器会显示出程序暂停的位置,也就是出错的位置。
 
而这个出错的位置一般都是库函数或系统内核函数,基本看不懂,但是别急,程序会停留在这些函数里,那一定是自己程序的某个地方调用到这个函数里,那么怎么找到这个自己程序里的函数呢。
 
点击菜单栏debug->Windows->CallStack
在Call Stack调试区会从当前出错的函数逐级往上跟踪,一直到mian(),__tmainCRTStartup(),mainCRTStartup(),及kernel32.dll里面。那么自己程序中的函数就会紧接着main()函数。
OK,顺滕摸瓜找到那个函数,看看出了问题什么吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: