Comment utiliser les bibliothèques de débogage sur ubuntu
Mon problème actuel est avec libwebkitgtk-3.0-0, mais je suppose que ce problème est assez générique.
Ma demande est de s'écraser quelque part dans le webkit code. Mon hypothèse est que nous faisons quelque chose de stupide et que vous voulez trouver ce que. Chose la plus facile sera de définir un point d'arrêt ou d'utiliser la version de débogage de la bibliothèque.
- Comment puis-je obtenir exacte de code source avec laquelle la bibliothèque a été construite? Je suis la trace de pile d'après elle exporte la base, mais le numéro de ligne gdb est à dire ne correspondent pas avec ceux que je vois dans le code. En d'autres mots, si j'installe libwebkitgtk-3.0-0 je veux obtenir exacte code source de l'.
- J'ai installé la version de débogage de la bibliothèque webkit. Ces versions de débogage ont la même fonctionnalité que si vous compilez webkit avec --enable-debug? Les versions de débogage de webkit activer la journalisation basé sur WEBKIT_DEBUG variable d'environnement, mais je ne pouvais pas obtenir le même journalisation même si l'utilisation de la version de débogage de la bibliothèque.
- Comment utiliser la version debug, j'ai réussi à compiler? J'ai réussi à compiler webkit sur ma machine et a essayé de jongler avec les chemins de chargement et de ces. Ma demande n'a pas de ramassage nouvelle bibliothèque partagée, peu importe ce que je fais - je peux dire en fonction de l'utilisateur de l'agent signature. À un moment, j'ai réussi à ramasser la bibliothèque, mais alors SSL arrêts de travail. Même SSL problème arrive avec GtkLauncher. Donc, je vais faire une erreur quelque part.
Merci pour les pointeurs.
OriginalL'auteur user937720 | 2013-01-15
Vous devez vous connecter pour publier un commentaire.
1) Quand j'ai besoin de creuser dans une bibliothèque que j'ai installé via un package, la première chose que j'ai à faire est de l'installer à partir des sources. Je veux dire configur/make/make install. En général, je mettre le code source dans le répertoire /usr/local/src /et l'installer dans /usr/local . C'est, à mon avis, est le moyen le plus fiable de l'exécution du code exact pour laquelle vous avez de la source.
3)
Cela sonne comme vous l'avez fait ce que j'ai décrit ci-dessus. Ce que vous devez faire est de vous assurer que votre logiciel est à l'aide de l'inclure et de répertoires de liens qui sont l'hébergement de votre compilé, le débogage est activé, la bibliothèque. Sens s'assurer que -I/usr/local/include et -L /usr/local/lib drapeaux sont ensemble et ils viennent avant /usr/include et /usr/lib.
Vous pouvez être encore plus sûr, par la suppression de la version binaire de la bibliothèque de l'installation d'ubuntu, veiller à ce que la version que vous avez construit et installé est la seule version présente sur le disque dur. De cette façon, vous saurez à coup sûr que vous avez été en mesure de configurer votre application pour utiliser cette bibliothèque. Sinon ça va échouer, au lieu de constamment à vous de me demander si c'est à l'aide de la nouvelle bibliothèque ou de l'ancienne bibliothèque.
2) Généralement oui. Mais ça dépend de la manière dont la bibliothèque est écrit, et ce que l'ubuntu emballeur décidé de faire.
Une fois que vous compilez le programme à l'aide de votre construction locale de la bibliothèque, voir si vous obtenez exactement la même erreur première. Si non, alors c'est aussi un point de données. Peut-être que le problème se fixe depuis la dernière fois ubuntu emballés de la bibliothèque. Peut-être que la bibliothèque n'est pas emballé correctement et c'est ça le problème. Vous pourriez même obtenir de nouvelles erreurs, parce que la ubuntu emballeur configuré la bibliothèque d'une certaine façon, de sorte qu'il avait un travail et que vous ne faites pas la même chose. Vous obtiendrez des pistes intéressantes de toute façon.
Bonne chance
OriginalL'auteur Spundun
TL;DR: Installer libwebkitgtk-3.0-0-dbg Installer libwebkitgtk-3.0-0-dbg http://hostmar.co/software-small, alors vous disposez de tous les symboles de débogage.
Pour les symboles de débogage, vous n'avez pas l'habitude d'avoir à l'installer à partir des sources.
Comme vous le savez, pour obtenir les symboles de débogage pour le logiciel que vous êtes en train de construire vous-même, vous pouvez exécuter la GCC avec
-g
.Pour les logiciels installés sur votre système d'exploitation du gestionnaire de package (qui comprend
libwebkitgtk-3.0-0
, ici), au moins pour les paquets officiels, il y a généralement aussi les paquets qui fournissent des symboles de débogage.Vous n'avez pas réellement besoin d'avoir une version de débogage d'un programme ou d'une bibliothèque pour obtenir une symbolique à la trace de la pile dans
gdb
.gdb
prend également en charge les fichiers de fournir un "add-on" les symboles de débogage dans/usr/lib/debug
.Vous utilisez Ubuntu, selon les balises sur votre question. Sur Ubuntu, symboles de débogage forfaits sont disponibles en deux variétés:
-dbg
et-dbgsym
. Un programme ou une bibliothèque située à/path
obtient les symboles de débogage à/usr/lib/debug/path
.-dbg
PaquetsCes paquets sont souvent nommés différemment de leurs paquets fournissant la réelle exécutables ou des fichiers de la bibliothèque. Ils sont souvent nommés de la même façon à
-dev
paquets (qui fournissent des fichiers d'en-tête) et-doc
paquets. Un-dbg
paquet a parfois moins de la bibliothèque de la numérotation de version dans le nom de la bibliothèque réelle paquets, couvrant parfois les binaires fournis dans de multiples autres paquets.Par exemple,
libgtkmm-3.0-1
's correspondant-dbg
paquet estlibgtkmm-3.0-dbg
.Sur l'autre main, parfois un
-dbg
paquet est le même nom que le package dont les symboles qu'il fournit (à l'exception de la-dbg
suffixe). Par exemple,libwebkitgtk-3.0-0
's correspondant-dbg
paquet estlibwebkitgtk-3.0-0-dbg
. C'est celui que vous voulez.Vous pouvez l'installer dans le Centre de Logiciel ou en cours d'exécution:
Maintenant, lors du débogage d'un programme lié à une bibliothèque fournie par
libwebkitgtk-3.0-0
,gdb
charge automatiquement les symboles à partir d'un fichier fourni parlibwebkitgtk-3.0-0-dbg
.-dbgsym
PaquetsParfois exécutables binaires fournis par un paquet officiel n'ont pas de symboles de données dans toute
-dbg
paquet. Lorsque cela se produit, en général, vous pouvez installer le-dbgsym
paquet.Contrairement à
-dbg
paquets,-dbgsym
paquets:X-dbgsym
oùX
est le package de la prestation du programme ou de la bibliothèque elle-même.-dbg
paquets.Depuis
-dbgsym
paquets sont situés dans des dépôts, vous devez activer ces référentiels. Leur DEB lignes sont:Pour les activer, vous pouvez exécuter ces commandes (adapté de DebuggingProgramCrash par "Contribution à la documentation Ubuntu wiki", section 2):
De laisser le en italique lignes, si vous êtes sur une version de développement (alpha ou bêta). Assurez-vous de les ajouter si vous continuez à utiliser la version une fois stable, même si.
Ces commandes faire trois choses:
/etc/apt/sources.list.d/ddebs.list
(qui contient les lignes DEB).Donc, si jamais vous voulez utiliser la
-dbgsym
fournis par des symboles à la place de la-dbg
fourni des symboles, la-dbgsym
paquet pourlibwebkitgtk-3.0-0
est (conformément à la simple convention de nommage ci-dessus)libwebkitgtk-3.0-0-dbgsym
.Vous pouvez avoir à la fois
-dbg
et-dbgsym
des paquets installés sur le même système, mais pas si elles fournissent des symboles pour les mêmes fichiers. Donclibwebkitgtk-3.0-0-dbg
etlibwebkitgtk-3.0-0-dbgsym
conflit les uns avec les autres; ils ne peuvent pas être installés (en même temps).En utilisant les Symboles
Sur la plupart des Unix-like avec des Systèmes d'exploitation, le débogueur recherchera automatiquement installé symboles. Ubuntu n'est pas différent-dans Ubuntu,
gdb
recherche automatiquement dans/usr/lib/debug
. Si vous n'avez pas besoin de faire quelque chose de spécial.Toutefois, si jamais vous avez besoin de le dire à
gdb
à charge spécifique de symboles de débogage du fichier, vous pouvez utiliser le-s file
drapeau. Voir le manuel de GNU et gdb(1) pour plus de détails.Malheureusement, ce n'est pas toujours le travail. Par exemple,
libarchive13
n'ont ni-dbg
ni-dbgsym
....Je pense que après avoir essayé un certain temps il n'est pas possible et ubuntu n'a pas de soins. Sommes-nous tous d'aller installer gentoo pour le développement si nous voulons code source unique d'entrer dans la 3ème partie des bibliothèques comme webkit ou gtk ?
OriginalL'auteur Eliah Kagan
@Elie de la réponse raconte comment obtenir les symboles d'une manière très pratique.
La question demeure, "comment puis-je trouver le code source?".
J'ai l'habitude de faire
apt-get source <pkgname>
qui est bien et bon, mais je dois manuellement dire gdbdir <path-to-wherever-I-put-the-source>
et malheur si c'est un package comme eglibc où l'on doit comprendre que le chemin de références sont de lanss
sous-répertoire, et non pas la racine.Sur RHEL, tout simplement, on n'a par exemple
yum install --enable-repo rhel-debuginfo libX11-debuginfo
(justeyum install libX11-debuginfo
sur CentOS 7) et instantanément vous obtenez des symboles et de la source dans gdb sans déconner. Je suis toujours à la recherche pour que la commodité sur Ubuntu.gdb --fullname --nx --directory (relative_path_to_library_source)
-- voir iciOriginalL'auteur Nathan Kidd
Afin de déboguer contre les bibliothèques dynamiques, vous pouvez ajouter de la dgb engrenages avec symbole et la distribution des sources de paquets, comme l'a suggéré.
Ensuite, il est nécessaire de vérifier si la compilation de répertoires de l'symboles de débogage tableau correspond aux les chemins de l'installation de la source, si ce n'est pas vous devriez cartographie les chemins d'accès dans gdb. Suivant les commandes pour activer le débogage de la glibc
OriginalL'auteur fusillator