Access Violation

Jun 07, 2016 pm 03:50 PM
access un 运行

当你运行程式得到了一个AV(Access Violation)错误的时候,这意味着你的程式正在试图访问一块不再有效的内存,请注意我所提到的 不再 有效。大多数的情况下,出现这个错误要么是因为你试图访问一块已经被释放的内存,要么是想使用一个还未创建对象的指针。 幸运

    当你运行程式得到了一个AV(Access Violation)错误的时候,这意味着你的程式正在试图访问一块不再有效的内存,请注意我所提到的“不再 ”有效。大多数的情况下,出现这个错误要么是因为你试图访问一块已经被释放的内存,要么是想使用一个还未创建对象的指针。

    幸运的是:Win32的内存体系在不同的进程(Process)间使用了独立的地址空间。所以我们可以不必担心会访问到其他的进程中的地址空间而造成破坏,(在Win 16下就有这种潜在的危险).这也就意味着我们能够正确的利用错误对话框中的信息。

    当我们得到一个AV错误对话框的时候,将会出现例如:Av at ddress ????的字样。这个时候把这个地址写下来(如图为:0X4006A620),回到程序中并且打开调试用的CPU窗口,右键选择"Goto Address",你将会发现出错的信息结构。

    当然CPU窗口都是以汇编语言(Assembly)出现的.你可能对此不大熟悉。于是你就可以在窗口中滚动看看到底是哪个函数(funtion)调用了它。这样你就可以在这个地方设置断点了(breakpoint).

不幸的是,不是每个错误都是这么容易的捕捉到的。相对而言。指针问题是很难调试的。这里有个常规的法则就是:在删除指针指向的对象以后。请将它置为NULL 。因此在调用的时候你可以先看看这个指针是否为NULL,如果是NULL,你可以在这个地方输出一些调试信息以方便你在发生AV错误的时候能精确的找到这个地方。

 

 

    在VC中调试程序时,Output窗口有时会出现“First-chance exception in xxx.exe...”这样的信息。一般来说,这是由于程序中发生了异常,被VC捕获而产生的输出。
  在调试器中运行程序时,如果程序产生异常,调试器会首先获得通知(即First-chance exception),而后此异常由产生它的程序负责捕获。如果程序没有捕获此异常,那么调试器会再次被通知(即Second-chance exception,Last-chance exception),并结束程序。
 通常见到的“First-chance exception”一般是“0xC0000005: Access Violation”,“0xC00000FD: Stack Overflow”等,这些都说明程序中有缺陷,需要修正。
  但是也有一些属于正常的情况,例如“First-chance exception in xxx.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception”。Windows 操作系统中广泛使用了结构化异常(SEH)来处理特殊情况,许多和底层打交道的API都靠SEH来处理可能发生的意外。并且,这些API中都有捕获SEH 的代码,产生的异常不会对程序造成影响。但是由于上面提到的“First-chance exception,Second-chance exception”机制,VC仍然会有输出,但是我们完全可以忽略。如果你实在不喜欢这些输出信息,那你就必须禁用对特定异常的“First- chance exception”捕获。

 

    在调试状态下,打开debug菜单下的exception对话框,把access violation异常的action改成stop always,这时再出现异常,调试器就会弹出一个对话框报告这个异常,并在异常发生处停下来,而不仅仅是在output窗口中报告first- chance exception,这有助于你定位异常位置。

 

               http://www.wangchao.net.cn/bbsdetail_73301.html

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment désactiver les applications en arrière-plan dans Windows 11_Tutoriel Windows 11 pour désactiver les applications en arrière-plan Comment désactiver les applications en arrière-plan dans Windows 11_Tutoriel Windows 11 pour désactiver les applications en arrière-plan May 07, 2024 pm 04:20 PM

Comment désactiver les applications en arrière-plan dans Windows 11_Tutoriel Windows 11 pour désactiver les applications en arrière-plan

Comment convertir le pdf Deepseek Comment convertir le pdf Deepseek Feb 19, 2025 pm 05:24 PM

Comment convertir le pdf Deepseek

Que signifie Dao en Java Que signifie Dao en Java Apr 21, 2024 am 02:08 AM

Que signifie Dao en Java

Impossible d'autoriser l'accès à la caméra et au microphone sur iPhone Impossible d'autoriser l'accès à la caméra et au microphone sur iPhone Apr 23, 2024 am 11:13 AM

Impossible d'autoriser l'accès à la caméra et au microphone sur iPhone

Que signifie le champ en Java Que signifie le champ en Java Apr 25, 2024 pm 10:18 PM

Que signifie le champ en Java

Comment lire le plan d'exécution de la procédure stockée Oracle Comment lire le plan d'exécution de la procédure stockée Oracle Apr 18, 2024 pm 10:18 PM

Comment lire le plan d'exécution de la procédure stockée Oracle

Comment le mécanisme de réflexion Java modifie-t-il le comportement d'une classe ? Comment le mécanisme de réflexion Java modifie-t-il le comportement d'une classe ? May 03, 2024 pm 06:15 PM

Comment le mécanisme de réflexion Java modifie-t-il le comportement d'une classe ?

Comment inter-domaines iframe dans vue Comment inter-domaines iframe dans vue May 02, 2024 pm 10:48 PM

Comment inter-domaines iframe dans vue

See all articles