关于First-chance exception at XXX 异常问题

sghcpt 2011-08-22 02:23:41
我的问题是这样的,我有一个程序,调用了别人的库,在程序运行一段时间,程序就会如下错误:
First-chance exception at 0x1000931a in xxx.exe: 0xC0000005: Access violation reading location 0xfeef04ee.
Unhandled exception at 0x1000931a in xxx.exe: 0xC0000005: Access violation reading location 0xfeef04ee.
自己的代码查了,好像没有发现错误。我怕就是别人的库引起的,那么我想请问一下,有没有办法,可以在上面出现的错误中,知道是别人的库引起的,还是我的代码引起的?谢谢了。
...全文
2639 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sghcpt 2011-08-24
  • 打赏
  • 举报
回复
To snmhm1991
"只是想判断是谁的代码出错了这个应该很简单吧,直接断点调试一定是可以解决的吧,关键在外部库函数周围设置断点,一般库有错就会直接产生异常吧,虽然这个回答有点小白,不过只为判断问题出在谁,应该还是有用吧"
请问,我的程序出现问题,时间不定的,有时是30分钟有时是1天多,这样断点是不可行的吧。
sghcpt 2011-08-24
  • 打赏
  • 举报
回复
To cnzdgs
"如果出错的线程是DLL自己创建的,那基本上就是DLL的问题了,除非你的程序内存越界或指针使用不当破坏了DLL所使用的内存。"
请问,我现在就是不知道是谁引起这个错误,想找出来呀。

“如果是自己创建的线程,你用Debug配置生成程序来运行,出错时在调用堆栈中可以找到自己的代码。”
请问“Debug配置”是什么意思?,我现在测试都是在vs下的debug版本下测试的。
cnzdgs 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sghcpt 的回复:]
To cnzdgs
"如果出错的线程是DLL自己创建的,那基本上就是DLL的问题了,除非你的程序内存越界或指针使用不当破坏了DLL所使用的内存。"
请问,我现在就是不知道是谁引起这个错误,想找出来呀。

“如果是自己创建的线程,你用Debug配置生成程序来运行,出错时在调用堆栈中可以找到自己的代码。”
请问“Debug配置”是什么意思?,我现在测试都是在vs下的debug版本下测试的。
[/Quote]
你可以借助工具检查自己的程序有无内存越界等错误,如果没有,就不是你的程序引起的。
Debug配置就是debug版本。
snmhm1991 2011-08-23
  • 打赏
  • 举报
回复
只是想判断是谁的代码出错了这个应该很简单吧,直接断点调试一定是可以解决的吧,关键在外部库函数周围设置断点,一般库有错就会直接产生异常吧,虽然这个回答有点小白,不过只为判断问题出在谁,应该还是有用吧
cnzdgs 2011-08-23
  • 打赏
  • 举报
回复
如果出错的线程是DLL自己创建的,那基本上就是DLL的问题了,除非你的程序内存越界或指针使用不当破坏了DLL所使用的内存。
如果是自己创建的线程,你用Debug配置生成程序来运行,出错时在调用堆栈中可以找到自己的代码。
sghcpt 2011-08-23
  • 打赏
  • 举报
回复
To VisualEleven
"Debug下看call stack找到出错的函数调用~"
在出错的那个线程中,在调用堆栈那里,看到的都是系统的代码呀,最后都是指向那个ntdll.dll这个dll文件。
sghcpt 2011-08-23
  • 打赏
  • 举报
回复
To ndy_w
"出错信息是有异常未被捕获,你捕获下就知道在哪里了。可以在调用别人dll的时候try/catch。"
请问,因为别人的dll存在回调函数,这样try/catch怎么放在别人的代码调用哪个那里????
Eleven 2011-08-23
  • 打赏
  • 举报
回复
Debug下看call stack找到出错的函数调用~
ndy_w 2011-08-23
  • 打赏
  • 举报
回复
出错信息是有异常未被捕获,你捕获下就知道在哪里了。可以在调用别人dll的时候try/catch。
sghcpt 2011-08-23
  • 打赏
  • 举报
回复
To cnzdgs
"从错误信息来看,异常是在你所调用的DLL中产生的,如果你对该DLL的调用方法没有错,那就是DLL自身的问题了。你可以在自己调用DLL的相关代码上设置断点,或者在出错时在调用堆栈中找自己的代码,查看程序传递的参数是否正确。"

因为程序出现错误的时间不定而且出现的错误代码处也不相同,所以设置断点调试好像不太行。

“或者在出错时在调用堆栈中找自己的代码,查看程序传递的参数是否正确。”
请问,这个的顺序是否在出错的线程那里往上找了?因为之前我看过,在出错的线程那里,看调用堆栈,找不到我的代码,都是系统的一些代码。
cnzdgs 2011-08-22
  • 打赏
  • 举报
回复
从错误信息来看,异常是在你所调用的DLL中产生的,如果你对该DLL的调用方法没有错,那就是DLL自身的问题了。你可以在自己调用DLL的相关代码上设置断点,或者在出错时在调用堆栈中找自己的代码,查看程序传递的参数是否正确。
sghcpt 2011-08-22
  • 打赏
  • 举报
回复
To oyljerry
“你查看调用堆栈,往上回溯,看最开始的代码是什么样的函数引起的”
是怎么的操作?是在Thread那里往上回溯?还是Stack frame那里往上回溯?
我看过,如果在Stack frame那里往上回溯,它调用的都是一些系统的代码或者函数。
oyljerry 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sghcpt 的回复:]
To buyong
"debug运行,中断后看调用堆栈窗口"
我也按你说的操作,执行过了,但它转到的库是ntdll.dll,没有显示到我的代码段那里。
[/Quote]
你查看调用堆栈,往上回溯,看最开始的代码是什么样的函数引起的
sghcpt 2011-08-22
  • 打赏
  • 举报
回复
To buyong
"debug运行,中断后看调用堆栈窗口"
我也按你说的操作,执行过了,但它转到的库是ntdll.dll,没有显示到我的代码段那里。
sghcpt 2011-08-22
  • 打赏
  • 举报
回复
To Waistcoat23
"这些信息看不出具体问题的,有时这些调试信息也不会引起问题的。
你程序出问题了可以用windbg调试下,看具体错误。"
我对windbg不熟悉,请问还有其它的办法定位吗?
buyong 2011-08-22
  • 打赏
  • 举报
回复
debug运行,中断后看调用堆栈窗口
Waistcoat23 2011-08-22
  • 打赏
  • 举报
回复
这些信息看不出具体问题的,有时这些调试信息也不会引起问题的。

你程序出问题了可以用windbg调试下,看具体错误。
通过本课程学习您可以学习到Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart中的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart中隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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