......
doc.Add(table);
......
当程序执行到doc.Add方法的时候,就卡住了,也不抛异常。 其实一开始我也不知道这里卡住,只是程序一跑,就无反应了,
我是一步一步调试才知道是卡在了这里。
有什么方法能够准确知道VS中,程序是运行到哪一句代码的时候,然后就不往下走了么?
18 个解决方案
#1
doc.add是啥,跟进去
#2
可以让调试器停住,然后在调试堆栈中看到它当前调用的是什么。
当然,如果你有完备的单元测试和日志,那么发现起来或许容易一些。
当然,如果你有完备的单元测试和日志,那么发现起来或许容易一些。
#3
用日志记录一下噻
#4
f11跟进去?
#5
doc.Add 是ItextSharp,是第三方dll提供的一个方法,再往下走就是Metadata了。我的意思是,我完全不知道程序到这里就卡住了,我是一步一步的代码调试到这里才发现的。有没有什么办法能够定位的哪个方法执行的时候非常耗时?否则如果代码很多的话,一步一步调试那就太费劲了。
#6
让调试器停住看堆栈貌似就是这个?这个具体怎么操作,有没有什么链接可以给我,谢谢。
#7
一看就是操作word的。。不抛异常估计是出现死循环或者死锁了。。仔细检查代码。看是不是用了多线程或者死循环
#8
既然知道卡在哪,在那设置个断点,然后调试查看,具体问题不就容易找出了?
#9
这个是操作PDF的,生成PDF的。doc.Add方法最底层的方法,就是在这里就卡住不动了。
#10
#11
#12
如果你能遵循规范,不要把大段的代码都写到一个方法里,而是将相似的内容进行封装,每个函数里代码不要过多
这样查找起来会快很多
至于为什么会卡住,只能自己去找原因了.除非你有dll的源码并且附加进工程,否则dll里到底怎么了,谁知道
这样查找起来会快很多
至于为什么会卡住,只能自己去找原因了.除非你有dll的源码并且附加进工程,否则dll里到底怎么了,谁知道
#13
把你的dll拿去反编译看看里面的逻辑 还有把断电去掉 看看 抛不抛异常 。如果不抛异常而且 很长时间没反应 那估计就是 出现死循环或者死锁或者无线递归的情况。。不然的话应该会抛异常的。。而且可能这个Add方法需要时间过长导致断电没反应这都很正常
#14
还有,如果多个线程共用一个函数,加断点有时候会卡住
要加断点,最好是把要测试的函数放到主线程里运行,然后再断点测试
要加断点,最好是把要测试的函数放到主线程里运行,然后再断点测试
#15
还有,如果多个线程共用一个函数,加断点有时候会卡住
要加断点,最好是把要测试的函数放到主线程里运行,然后再断点测试
嗯。好的,谢谢。
其实最终总结一下,就是VS里边没有任何小工具能查看当前程序运行到哪里了,这样理解对吧?
#16
如果一个对象调试进不去,通常意味着该对象的创建出了异常,检测下该对象new构建函数是否能够创建
#17
#18
用 ETW,
下载 PERFVIEW
下载 PERFVIEW
#1
doc.add是啥,跟进去
#2
可以让调试器停住,然后在调试堆栈中看到它当前调用的是什么。
当然,如果你有完备的单元测试和日志,那么发现起来或许容易一些。
当然,如果你有完备的单元测试和日志,那么发现起来或许容易一些。
#3
用日志记录一下噻
#4
f11跟进去?
#5
doc.add是啥,跟进去
doc.Add 是ItextSharp,是第三方dll提供的一个方法,再往下走就是Metadata了。我的意思是,我完全不知道程序到这里就卡住了,我是一步一步的代码调试到这里才发现的。有没有什么办法能够定位的哪个方法执行的时候非常耗时?否则如果代码很多的话,一步一步调试那就太费劲了。
#6
可以让调试器停住,然后在调试堆栈中看到它当前调用的是什么。
当然,如果你有完备的单元测试和日志,那么发现起来或许容易一些。
让调试器停住看堆栈貌似就是这个?这个具体怎么操作,有没有什么链接可以给我,谢谢。
#7
一看就是操作word的。。不抛异常估计是出现死循环或者死锁了。。仔细检查代码。看是不是用了多线程或者死循环
#8
既然知道卡在哪,在那设置个断点,然后调试查看,具体问题不就容易找出了?
#9
一看就是操作word的。。不抛异常估计是出现死循环或者死锁了。。仔细检查代码。看是不是用了多线程或者死循环
这个是操作PDF的,生成PDF的。doc.Add方法最底层的方法,就是在这里就卡住不动了。
#10
#11
#12
如果你能遵循规范,不要把大段的代码都写到一个方法里,而是将相似的内容进行封装,每个函数里代码不要过多
这样查找起来会快很多
至于为什么会卡住,只能自己去找原因了.除非你有dll的源码并且附加进工程,否则dll里到底怎么了,谁知道
这样查找起来会快很多
至于为什么会卡住,只能自己去找原因了.除非你有dll的源码并且附加进工程,否则dll里到底怎么了,谁知道
#13
一看就是操作word的。。不抛异常估计是出现死循环或者死锁了。。仔细检查代码。看是不是用了多线程或者死循环
这个是操作PDF的,生成PDF的。doc.Add方法最底层的方法,就是在这里就卡住不动了。
把你的dll拿去反编译看看里面的逻辑 还有把断电去掉 看看 抛不抛异常 。如果不抛异常而且 很长时间没反应 那估计就是 出现死循环或者死锁或者无线递归的情况。。不然的话应该会抛异常的。。而且可能这个Add方法需要时间过长导致断电没反应这都很正常
#14
还有,如果多个线程共用一个函数,加断点有时候会卡住
要加断点,最好是把要测试的函数放到主线程里运行,然后再断点测试
要加断点,最好是把要测试的函数放到主线程里运行,然后再断点测试
#15
还有,如果多个线程共用一个函数,加断点有时候会卡住
要加断点,最好是把要测试的函数放到主线程里运行,然后再断点测试
嗯。好的,谢谢。
其实最终总结一下,就是VS里边没有任何小工具能查看当前程序运行到哪里了,这样理解对吧?
#16
如果一个对象调试进不去,通常意味着该对象的创建出了异常,检测下该对象new构建函数是否能够创建
#17
#18
用 ETW,
下载 PERFVIEW
下载 PERFVIEW