读《软件调试》第九章
今日读了张银奎老师的《软件调试》,前面的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函数来发送调试消息。

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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".

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.

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 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

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

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.

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.
