vs可以知道当前执行到哪一行代码吗?

crystal_lz 2016-06-30 05:46:58
是这样的 今天在调试一个程序 大概代码是这样的

foo(a,b,c,nLevel){
for(xx){
if(各种一大堆猜测的可能会出问题的条件){
int a = 0;
a++;//这里下断点
}
//其他代码
a = x;b = x;c = x;
foo(a,b,c,nLevel + 1);//递归调用
}
console.writeLine(nLevel);//调试用
}
//=====
this.foo(a,b,c,1);

程序的表现是 死在了 this.foo(a,b,c,1);里面 进入后就再也没有出来
那感觉就像是 被死锁了或者被阻塞了 但是代码里面并没有锁或者有阻塞的代码
问题的关键是 有时候程序正常有时候不正常 所以我都不知道怎么下断掉调试
而且Console.WriteLine(nLevel)也是停在某一层就不动了 可以确定是被阻塞了之类的
然后我就在 想了一些条件进入那个if里面下了一个断点 尝试很多次之后 终于被我给碰对了断点
然后单步往下在【//其他代码】发现 又是进入了一个函数后没有出来 我在一层一层的跟进才发现
某个函数里面调用了 SendMessage 函数像一个目标窗口发送一个消息 但是遗憾的是 目标窗口并没有响应这个消息 所以造成了代码一直被阻塞(我压根就没想到对方会不回应消息这种不按套路出牌的情况) 所以我才赶紧换成了SendMessageTimeout函数
所以说我就想问 vs 有没有这样的功能 当程序不动的时候 点击某个菜单或者快捷键 能像下了断点一样 让程序停在当前正在执行的代码上面 如果有的话 或许我马上就能发现问题出在了SendMessage上面 而不是搞了半天才发现代码中有个一个SendMessage 很浪费时间 这样的情况出现不止一次了 程序跑着跑着就不动了的情况
...全文
4364 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
快捷键是 Ctrl+Alt+Break 啊。“调试”菜单上也写的很清楚。
crystal_lz 2016-06-30
  • 打赏
  • 举报
回复
引用 1 楼 yahle 的回复:
在调试状态,按中断,就是开始运行右边的 || ,然后看堆栈信息。
引用 2 楼 shingoscar 的回复:
没错就是他 用了这么久 居然没有看到。。。。。。我该说什么好 一般都点快捷键 没注意面板上还有 || 这个东西 顿时感觉智商下降了好几个档次
Poopaye 2016-06-30
  • 打赏
  • 举报
回复
yahle 2016-06-30
  • 打赏
  • 举报
回复
在调试状态,按中断,就是开始运行右边的 || ,然后看堆栈信息。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧