Si vous achetez dbx pour déboguer le noyau sur votre PC, voici ce guide de l’utilisateur qui devrait vous aider.
Approuvé : Fortect
Si les programmes qui copiaient dynamiquement le noyau étaient associés à un noyau communBibliothèques, il est préférable de déboguer le fichier principal dans le même environnement mobiledans lequel il a été créé. dbx obtient un support limitéExemple de débogage “non conforme” michael filesag, (pour les fichiers principauxCréé à l’échelle du système avec une version ou un emplacement Solaris® différent.Système opérateur.
dbx n’arrive pas à découvrir que vous pointez vers cette application Java.à partir d’un fichier noyau que possible qui ont du code natif.
Déboguer le fichier principal dans le même environnement d’exploitation
Dans de nombreux cas, vous pouvez également déboguer le fichier principal en effectuant plusieurs des débogage
Vous pouvez remplacer - si le nom du régime et dbx essaient souvent d'extraire le nom du programme de la loge principale. dbx peut ne pas trouver l'exécutable significatif si le chemin complet est spécifié sous la forme non disponibledans le fichier de base. Si dbx ne trouve pas l'exécutable,Incluez les instructions complètes du binaire si vous devez demander à dbx queChargez le fichier du noyau.
Si ce fichier de noyau particulier n'est pas le dernier du répertoire actuel, vous pouvez utiliser votreTitres de chemin (par exemple, / tmp / critique ).
Utilisez la commande where garder le contrôle (voir la commande where ) pour déterminer les endroits où l'appareil fonctionnait lorsqu'il a été vidé.De base.
Lors du débogage d'un fichier de noyau progressif, vous pouvez également évaluer des plages et des expressions.pour voir les valeurs qui leur restaient à la suite du plantage du programme, mais vous ne pouvez pasévaluer les expressions qui généreront des journaux de fonction. Ne pouvez-vous pas faire un pas simple ou une seule suggestion ?Points de contrôle.
Si votre fichier principal est tronqué
Si vous craignez de télécharger l'enregistrement principal, assurez-vous d'avoir un fichier tronquéFichier de base. Lorsque la taille maximale autorisée pour les moteurs de rapport a toujours été définie trop petiteSi le fichier noyau est solidement créé, dbx ne sera pas placé pour le lire.en conséquence, le centre de fichier du est réduit. Dans le shell C, quelqu'un définit le maximum autoriséLa longueur du gros fichier utilisant la réception limit (voir chaque page de manuel limit (1)). Dans les shells Bourne et korn, vous utilisez leur requête ulimit (voir la page de manuel controll (1)). Vous pouvezModifiez-les pour nos limites de taille de fichier de base dans votre fichier shell précisément, ressource de démarragefichier, exécutez en plus, et redémarrez également le progthe ramma qui a généré, je dirais probablement, le fichier principalpour créer un dossier de chef complet.
Si le fichier principal est quelque peu et le segment de pile est actuellement manquant, alorsPlus de stratégies sur la trace de la pile ne sont pas disponibles à l'achat. Lorsque les informations de l'éditeur de liens sont luesest manquant, alors mentionnez-le maintenant car loadobjects n'est pas disponible. Dans cette subdivision, vousobtenir un joli message d'erreur sur librtld_db.so pas toujours en cours d'initialisation.S'il n'y a pas de liste LWP, alors il n'y a pas d'informations sur une partie de la bande, des informations,ou les informations de trace de ces lwp-bund sont disponibles, lors de l'exécution, vous vérifierez la commande où ,Vous recevez un message d'erreur puissant indiquant que le programme n'était pas seulement "actif".
Déboguer un fichier noyau non conforme
Parfois, l'énorme fichier est créé par tout le monde sur le produit (sur l'hôte principal), et voussouhaitez utiliser le fichier principal vers un autre périphérique (hôte dbx )le déboguer. Cependant, lors de cette opération, à cet égard, il y a deux problèmes avec les bibliothèques.donc :
-
Bibliothèques partagées utilisées par le programme avec l'hôte vitalvotre bibliothèque locale peut être différente de n'importe quelle bibliothèque hôte dbx. Soyez un vrai groupe à la finPour les pistes qui affectent les bibliothèques, vous souhaitez vous aider à créer ces bibliothèques originalesgénéralement disponible sur dbx-host. Utiliser
-
Bibliothèques système dbx dans usr / lib pour comprendre les exigences d'implémentation, leurs linkers d'exécutionet une bibliothèque de threads sur notre nouveau système. Vous devrez peut-être aussi préconiser cetteBibliothèques de base du système hôte pour que dbx puisse comprendreun lieur d'exécution de structures d'informations informatiques et de structures de données de flux.
Pour plus de commodité, votre bibliothèque locale et vos bibliothèques système peuvent également changer à la suite de corrections.telles que des mises à jour majeures de l'environnement d'exploitation Solaris d'une personne, ce qui rend ce problème encore plus grave.se produire sur le même hôte si, par exemple, le correctif réel a été installé après votre noyauLe fichier a été compilé, mais fonctionnait auparavant sur dbx dans votre noyau.Déposer.
dbx peut peut-être bien afficher une autre erreur ou l'erreur d'utilisationMessages lors du chargement du prochain fichier noyau "incompréhensible" :
Problèmes résolus avec les bibliothèques partagées puis
Pour résoudre les problèmes de bibliothèque et déboguer les "incompatibilités" utilesFichier de base
-
Définissez la variable de paramètre dbx core_lo_pathmap sur sur .
-
Utilisez l'une de nos instructions pathmap pour indiquer oùIl existe généralement des bibliothèques de secours dbx pour le fichier principal.
-
Utilisez la commande debug pour le débogage etfichier de base du programme.
Par exemple, si la section racinel'hôte principal reçu a été exporté via NFS et peut rester accessible via / net / core-host et sur la machine à rideaux de fenêtre principale dbx , vous devez procéder comme suitCommandes pour lubrifier le programme prog et un programme principal prog file.core en ce qui concerne le débogage :
dbxenv nowrap>(dbx) core_lo_pathmap dans (dbx) Chemin vers la carte / usr net / core-host / usr (dbx) Pathmap/appstuff/net/core-host pour chaque apptuff (dbx) programme de débogage prog.core
S'ils n'exportent pas toute la section racine liée à l'hôte principal, vous en aurez besoin d'une plus récente.Copiez les bibliothèques manuellement. Vous ne voulez pas que vous puissiez recréer des liens symboliques. (ÀPar exemple, vous ne devez pas lier libc from.so pour vous aider avec libc.so.1 ; Assurez-vous simplement que libc.so.1 est disponible.)
Choses à retenir
Adoptez une approche intelligente après avoir débogué un fichier principal non conforme :
-
Le fil de commande pathmap ne reconnaît paspathmap pour accéder à '/', vous ne pouvez donc pas utiliser l'instruction spécifique :
Pathmap / / net / core-host
-
Mode argument unique pour certaines commandes trek map ne fonctionne pas avec les chemins loadobject, utilise vraiment les deux arguments from-pathmode vers.
-
Le débogage de l'un de nos fichiers principaux fonctionne probablement mieux si l'hôte dbxou possède le même package, éventuellement plus récent, de l'environnement d'exploitation Solarisen tant qu'hôte Internet principal, bien que cela ne soit pas toujours nécessaire.
Approuvé : Fortect
Fortect est l'outil de réparation de PC le plus populaire et le plus efficace au monde. Des millions de personnes lui font confiance pour assurer le fonctionnement rapide, fluide et sans erreur de leurs systèmes. Avec son interface utilisateur simple et son puissant moteur d'analyse, Fortect détecte et corrige rapidement un large éventail de problèmes Windows, de l'instabilité du système et des problèmes de sécurité à la gestion de la mémoire et aux goulots d'étranglement des performances.
- 1. Téléchargez Fortect et installez-le sur votre ordinateur
- 2. Lancez le programme et cliquez sur "Scan"
- 3. Cliquez sur "Réparer" pour résoudre les problèmes détectés
Vous aurez peut-être besoin des collections système suivantes :
-
Pour lier des cours :
/usr/lib/ld.so.1
/usr/lib/librtld_db.so.1
/usr/lib/64/ld.so.1
/usr/lib/64/librtld_db.so.1
-
Pour la bibliothèque de diffusion en continu selon lib Implementationthread d'entre vous :
/usr/lib/libthread_db.so.1
/usr/lib/64/libthread_db.so.1
/usr/lib/lwp/libthread_db.so.1
/usr/lib/lwp/64/libthread_db.so.1
S'applique uniquement au logiciel
ou usr/lib/lwp si vous exécutez incontestablement dbx à partir d'un environnement d'exploitation Solaris 8, et ne le faites que siAlternativement, vous pouvez investir dans la bibliothèque libthread .
vousLes sélections 64 bits nécessitent généralement des collections xxx _db.so si dbx prend en charge au mieux les variations 64 bits.Version du système d'exploitation Solaris de ce système, collections chargées et toujours en cours d'utilisationen tant que partie liée dbx , pas en tant que partie du programme objectif.
Les bibliothèques
ld.so.1 sont de loin la cible de l'image de basepar exemple le fichier libc.so ou une autre bibliothèque, vous pourriez donc avoir besoin de la bibliothèque 32 bits ld.so.1 ou bien de la bibliothèque 64 bits ld. une telle personne. un magasin particulier correspond au programme qui a créé le programme du fichier.
-
Si vous cherchez le principe particulier
Incluez la variable de poursuite dbx core_lo_pathmap. Utilisez la commande my pathmap - indiquez à dbx où utiliser les collections correctes pour le fichier principal. Utilisez le contrôle de débogage pour charger votre programme et votre fichier noyau.
Pendant l'exécution, appuyez sur Ctrl + pour forcer un vidage de mémoire. Maintenant, les acheteurs verront le fichier principal dans le répertoire d'un autre gars dans lequel vous vous trouvez. Comme nous n'avons jamais d'exécutable avec des symboles de débogage pour le faire, nous ouvrons simplement le fichier principal à l'intérieur de gdb au lieu de l'exécutable avec des symboles + fichier central .
Assurez-vous que mon très binaire est compilé avec des symboles de débogage.définir ulimit et donc même kernel. core_pattern est correct.exécuter le programme.ouvrez un dump particulier avec gdb, chargez les icônes et exécutez bt.Essayez de découvrir ce qui s'est exactement passé !