Maison base de données tutoriel mysql 读《软件调试》第九章

读《软件调试》第九章

Jun 07, 2016 pm 03:56 PM
cpu aujourd'hui professeur

今日读了张银奎老师的《软件调试》,前面的CPU和硬件相关的部分离得比较远,所以从第九章操作系统读起,今天的读书笔记: 9.2采集调试消息 调试事件分为8种 typedef enum _DBGKM_APINUMBER { DbgkmExceptionApi = 0, // 异常 DbgkmCreateThreadApi = 1, //

今日读了张银奎老师的《软件调试》,前面的CPU和硬件相关的部分离得比较远,所以从第九章操作系统读起,今天的读书笔记:

9.2采集调试消息
调试事件分为8种
typedef enum _DBGKM_APINUMBER
{
DbgkmExceptionApi = 0, // 异常
DbgkmCreateThreadApi = 1, // 创建线程
DbgkmCreateProcessApi = 2, // 创建进程
DbgkmExitThreadApi = 3, // 退出线程
DbgkmExitProcessApi = 4, // 进程退出
DbgkmLoadDllApi = 5, // 映射DLL
DbgkmUnloadDllApi = 6, // 反映射DLL
DbgkmErrorReportApi = 7, // 内部错误
DbgkmMaxApiNumber = 8, // 这组常量的最大值
} DBGKM_APINUMBER;


9.2.2 进程和线程创建消息
操作系统就支持向调试系统发送消息,这个我是没有想到的,具体过程如下:
创建用户态windows线程时,首先为线程建立必要的内核对象和数据结构,并分配栈(stack)空间,这些工作完成后,
该线程处于挂起状态(CREATE_SUSPEND), 而后进程管理器会通知环境子系统,环境子系统会作必要的设置和登记,最后
进程管理器会调用PspUserThreadStartup例程,准备启动该线程。
为了支持调试,PspUserThreadStartup总是会调用调试子系统的内核函数DbgkCreateThread,以便让调试子系统得到处理机会。


DbgkCreateThread会检查新创建线程所在的进程是否正在被调试(根据DebugPort是否为空),如果不是,便立即返回,
如果是,则会继续检查该进程的用户态运行时间(UserTime)是否为0,目的是判断该线程是否是进程中的第一个线程,如果是,
则通过DbgkSendApiMessage()函数向DebugPort发送DbgkmCreateProcessApi消息,如果不是,
则发送DbgkmCreateThreadApi消息。
调试器收到的进程创建(CREATE_PROCESS_DEBUG_EVENT,值为3)和线程创建(CREATE_THREAD_DEBUG_EVENT,值为2)事件就是源于这两个消息。


9.2.3 进程和线程退出消息 --- 与上面类似


9.2.4 模块映射和反映射消息
DLL(Dynamic-link Library)是Windows中使用最多的技术之一。如:
Windows内核文件NTOSKRNL.EXE虽然是EXE后缀,其实质是一个DLL;
NTDLL.DLL是连接用户态和操作系统内核的桥梁,用户态代码通过它访问内核服务;
Windows子系统DLL(KERNEL32.DLL,ADVAPI32.DLL,USER32.DLL,GDI32.DLL)是Windows API的载体;


观察进程中的DLL:
1.运行notepad.exe
2.启动VC6,通过Build>Start Debug>Attatch to Process...菜单弹出Attach Process对话框,然后选择notepad.
3. 通过Debug>Modules...菜单弹出模块列表,便可以看到notepad进程中的DLL了。
第二列是该模块在进程空间中的地址(虚拟地址,均小于0x80000000),可见这些模块都是位于用户空间中的。


存在于多个进程空间中的DLL,是否会重复占用内存?
否!当LoadLibrary()和LoadLibraryEx() API加载一个DLL时,会首先判断该DLL是否已经加载过,如果是,则不会重复加载,
只是将该DLL对应的内存页面映射(map)到目标进程的内存空间,并把该DLL的引用次数加1.
当进程退出或调用FreeLibrary() API要卸载一个DLL时,Windows会从进程的虚拟内存空间中把该DLL的映射删除(unmap),
并递减该DLL的引用次数,如果引用次数变为0,那么该DLL会被彻底移出内存。


9.2.5 异常消息
为了支持调试,系统会把被调试程序中发生的所有异常发送给调试器。
内核中KiDispatchException函数是分发异常的枢纽,它会给每个异常安排最多两轮被处理的机会,
对于每一轮处理机会,它都会调用调试子系统的DbgkForwardException函数来通知调试子系统。


总结:
系统的进程管理器、内存管理器和异常分发函数会调用调试子系统的Dbgk采集例程,来向调试子系统通报调试消息,
这些例程被调用后会根据当前进程的DebugPort字段来判断当前进程是否处于被调试状态。
如果不是,便忽略这次调用,直接返回;
如果是,便产生一个DBGKM_APIMSG结构,然后调用下一节将介绍的DbgkSendApiMessage函数来发送调试消息。

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Quelle doit être l'utilisation du processeur lorsque vous jouez ? Quelle doit être l'utilisation du processeur lorsque vous jouez ? Feb 19, 2024 am 11:21 AM

Il est courant que les jeux ralentissent votre ordinateur car ils consomment beaucoup de ressources. Il est essentiel de comprendre l'utilisation de votre processeur lorsque vous jouez afin d'éviter de le surcharger. Par conséquent, garder une trace de l’utilisation appropriée du processeur est essentiel pour que votre expérience de jeu reste fluide. Dans cet article, nous examinerons l'utilisation appropriée du processeur que vous devez réaliser pendant l'exécution de votre jeu. Utilisation du processeur pendant le jeu L'utilisation du processeur est un indicateur important de la charge de travail du processeur et dépend des spécifications de performances du processeur. Les processeurs plus puissants ont généralement une utilisation plus élevée. Un processeur avec plus de cœurs et de threads peut améliorer les performances globales de votre système. La prise en charge multithread permet de libérer tout le potentiel de votre processeur. Dans les jeux, l'utilisation du processeur dépend de l'utilisation du processeur, ce qui peut affecter le jeu.

Comment définir les performances du processeur au maximum dans Win11 Comment définir les performances du processeur au maximum dans Win11 Feb 19, 2024 pm 07:42 PM

De nombreux utilisateurs trouvent que l'ordinateur ne fonctionne pas suffisamment bien lorsqu'ils utilisent le système Win11. Ils souhaitent améliorer les performances du processeur, mais ils ne savent pas comment le faire. Ce qui suit présentera en détail comment régler les performances du processeur au niveau le plus élevé dans le système Win11 pour rendre votre ordinateur plus efficace. Méthode de paramétrage : 1. Cliquez avec le bouton droit sur « Ce PC » sur le bureau et sélectionnez « Propriétés » dans la liste des options. 2. Après avoir accédé à la nouvelle interface, cliquez sur « Paramètres système avancés » dans « Liens associés ». 3. Dans la fenêtre qui s'ouvre, cliquez sur l'onglet "Avancé" en haut, puis cliquez sur le & en bas de "Performances".

Comment sous-volter et overclocker votre processeur à l'aide d'Intel XTU Comment sous-volter et overclocker votre processeur à l'aide d'Intel XTU Feb 19, 2024 am 11:06 AM

Intel XTU est une application puissante qui vous permet de gérer facilement les performances de votre ordinateur. Vous pouvez résoudre les problèmes de surchauffe en ajustant la tension du processeur ou améliorer les performances en overclockant. Dans cet article, nous verrons comment tirer parti d'Intel XTU pour optimiser les performances de votre ordinateur, qu'il s'agisse d'ajuster la tension ou d'overclocker. Quel effet la sous-tension et l'overclocking ont-ils sur le processeur ? Avant de passer à l'apprentissage de la sous-tension et de l'overclocking d'un processeur, nous devons d'abord comprendre de quoi il s'agit. La sous-tension fait référence à la réduction progressive de la tension requise par le processeur. Ce processus contribue à réduire les émissions de chaleur, car la haute tension entraîne des températures plus élevées. En réduisant la tension d'alimentation du processeur, la température peut être efficacement réduite. Si votre ordinateur portable commence à ralentir après avoir chaud, vous devez résoudre le problème rapidement.

La différence entre un processeur en boîte et un processeur en vrac La différence entre un processeur en boîte et un processeur en vrac Jan 23, 2024 am 09:46 AM

Les différences entre les processeurs en boîte et en vrac : 1. Qualité ; 2. Période de garantie ; 3. Ventilateur ; 5. Emballage ; Introduction détaillée: 1. Qualité, qu'il soit en boîte ou en vrac, il n'y a aucune différence dans la qualité du processeur lui-même. Ils sont tous fabriqués par le même fabricant et sont soumis au même processus de tests de qualité et de contrôle de qualité. CPU en boîte Une période de garantie plus longue est généralement fournie, généralement de trois ans, tandis que les processeurs en vrac n'ont généralement qu'une garantie d'un an, car les processeurs en boîte sont généralement vendus par des revendeurs officiels ou agréés, etc.

Comment augmenter la fréquence d'horloge du processeur de votre ordinateur Comment augmenter la fréquence d'horloge du processeur de votre ordinateur Feb 20, 2024 am 09:54 AM

Comment overclocker les processeurs d'un ordinateur Avec les progrès continus de la technologie, la demande des gens en matière de performances informatiques est également de plus en plus élevée. Un moyen efficace d'améliorer les performances de l'ordinateur consiste à augmenter la fréquence de fonctionnement du processeur grâce à l'overclocking. L'overclocking permet au processeur de traiter les données plus rapidement, offrant ainsi une puissance de calcul plus élevée. Alors, comment overclocker le processeur d’un ordinateur ? Ce qui suit vous présentera les principes de base et les méthodes de fonctionnement spécifiques de l'overclocking. Tout d'abord, comprenons comment fonctionne l'overclocking. La fréquence de fonctionnement du CPU est déterminée par l'oscillateur à cristal de la carte mère

SRAM à 144 cœurs empilée en 3D : Fujitsu détaille le processeur de centre de données de nouvelle génération MONAKA SRAM à 144 cœurs empilée en 3D : Fujitsu détaille le processeur de centre de données de nouvelle génération MONAKA Jul 29, 2024 am 11:40 AM

Selon des informations publiées sur ce site Web le 28 juillet, le média étranger TechRader a rapporté que Fujitsu avait présenté en détail le processeur FUJITSU-MONAKA (ci-après dénommé MONAKA) dont la livraison était prévue pour 2027. MONAKACPU est basé sur l'architecture « cloud native 3D many-core » et adopte le jeu d'instructions Arm. Il est orienté vers les domaines des centres de données, de la périphérie et des télécommunications. Il est adapté à l'informatique IA et peut réaliser un RAS1 au niveau du mainframe. Fujitsu a déclaré que MONAKA réaliserait un bond en avant en termes d'efficacité énergétique et de performances : grâce à des technologies telles que la technologie ultra-basse tension (ULV), le processeur peut atteindre 2 fois l'efficacité énergétique des produits concurrents en 2027, et le refroidissement ne nécessite pas de refroidissement par eau. De plus, les performances applicatives du processeur peuvent également atteindre deux fois celles de votre adversaire. En termes d'instructions, MONAKA est équipé de vecteur

Le processus de fonctionnement de l'hôte de service WIN10 occupant trop de CPU Le processus de fonctionnement de l'hôte de service WIN10 occupant trop de CPU Mar 27, 2024 pm 02:41 PM

1. Tout d'abord, nous cliquons avec le bouton droit sur l'espace vide de la barre des tâches et sélectionnons l'option [Gestionnaire des tâches], ou cliquons avec le bouton droit sur le logo de démarrage, puis sélectionnons l'option [Gestionnaire des tâches]. 2. Dans l'interface du Gestionnaire des tâches ouverte, nous cliquons sur l'onglet [Services] à l'extrême droite. 3. Dans l'onglet [Service] ouvert, cliquez sur l'option [Ouvrir le service] ci-dessous. 4. Dans la fenêtre [Services] qui s'ouvre, cliquez avec le bouton droit sur le service [InternetConnectionSharing(ICS)], puis sélectionnez l'option [Propriétés]. 5. Dans la fenêtre des propriétés qui s'ouvre, remplacez [Ouvrir avec] par [Désactivé], cliquez sur [Appliquer] puis cliquez sur [OK]. 6. Cliquez sur le logo Démarrer, puis cliquez sur le bouton d'arrêt, sélectionnez [Redémarrer] et terminez le redémarrage de l'ordinateur.

AM4 refuse de mourir, les informations indiquent qu'AMD lancera Ryzen 9 5900XT/7 5800XT : cadencé jusqu'à 4,8 GHz AM4 refuse de mourir, les informations indiquent qu'AMD lancera Ryzen 9 5900XT/7 5800XT : cadencé jusqu'à 4,8 GHz Jun 05, 2024 pm 09:43 PM

Selon les informations de ce site Web du 1er juin, la source @CodeCommando a tweeté aujourd'hui, partageant quelques captures d'écran des prochains documents de présentation d'AMD lors de l'événement Computex2024. Le contenu du tweet était « AM4 ne mourra jamais », et la photo qui l'accompagne montrait deux nouveaux. Processeurs de la série Ryzen5000XT. D'après les captures d'écran, les deux produits suivants sont présentés : Ryzen95900XTR Ryzen95900XT se positionne relativement haut de gamme. Il s'agit d'un nouveau processeur AM4 à 16 cœurs avec une vitesse d'horloge légèrement inférieure à celle du Ryzen95950X d'AMD. Ryzen75800XT Il s'agit d'une variante plus rapide du processeur Ryzen75800X existant d'AMD. Les deux processeurs sont cadencés jusqu'à 4,8G.

See all articles