问题签名:
问题事件名称: APPCRASH
应用程序名: python.exe
应用程序版本: 0.0.0.0
应用程序时间戳: 58583522
故障模块名称: MSVCR90.dll
故障模块版本: 9.0.30729.6161
故障模块时间戳: 4dace4e7
异常代码: c0000005
异常偏移: 000000000001e25c
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
其他信息 1: b0fc
其他信息 2: b0fc637196bdd5b70224d3626137a6ab
其他信息 3: 3579
其他信息 4: 35797d1db39c6ec6b5c9510af7c4bfff
第一种方法:
根据这个偏移000000000001e25c,知道所在的DLL MSVCR90.dll (版本9.0.30729.6161), 那么可以打开IDAPro 观察一下,是怎么的代码出问题了。
然后再用windbg 启动python 在MSVCR90.dll 那个位置加断点,看看是否能触发。如果多次触发就将断点去掉。然后看崩溃的位置和栈的信息。
第二种方法: 如果调用了第三方的 dll ,找出依赖MSVCR90.dll的
第三种: 加入 log ,利用二分法一步步检查.
线程执行通常都是周期性执行,分成两种情况导致多线程停止:
1. 存在wait或sleep之类的等待
在线程中使用event.wait(s)来替换wait或sleep, s为等待的时间,如果s秒之内没有调用event.set(),event.wait(s)也会退出继续往下执行,如果调用了event.set(),event.wait就会立刻退出。
2. 或者是block的系统调用。
在线程中使用event.isSet()来判断是否线程被要求退出。
我的遇到的问题是停止工作后停止日志, 位置固定,所以导致问题无法定位
https://biwen.csdn.net/channel/python 之:python tkinter 多线程无响应