comment lire et utiliser les rapports de plantage?

13

Une petite application indépendante plante sur mon système (Kubuntu 12.04). Je souhaite consulter manuellement les informations du rapport de plantage, puis envoyer par e-mail les parties pertinentes au développeur. Le fichier se trouve dans /var/crash/_usr_bin_appname.1000.crashmais je ne sais pas de quel outil j'ai besoin pour lire, éditer et enregistrer le rapport de plantage sous une forme que je peux envoyer par e-mail au développeur.

MountainX
la source

Réponses:

8

Les rapports de crash d'Apport doivent être situés dans:

/var/crash

Et quand j'en regarde un:

jmunsch@NE-522:/var/log$ sudo cat /var/crash/*.*


ProblemType: Crash
Architecture: i386
Date: Fri Jul 11 20:40:09 2014
DistroRelease: Ubuntu 12.04

C'est le programme qui a causé un problème:

ExecutablePath: /usr/sbin/winbindd
ExecutableTimestamp: 1395068066
ProcCmdline: /usr/sbin/winbindd
ProcCwd: /var/log/samba/cores/winbindd
ProcEnviron:
 TERM=linux
 PATH=(custom, no user)

Ce sont les objets partagés C / bibliothèques partagées qui étaient utilisés par le programme problématique:

ProcMaps:
 b6606000-b6622000 r-xp 00000000 08:01 394314     /lib/i386-linux-gnu/libgcc_s.so.1
 b6622000-b6623000 r--p 0001b000 08:01 394314     /lib/i386-linux-gnu/libgcc_s.so.1
 b6623000-b6624000 rw-p 0001c000 08:01 394314     /lib/i386-linux-gnu/libgcc_s.so.1
 b6642000-b664d000 r-xp 00000000 08:01 442782     /lib/i386-linux-gnu/libnss_files-2.15.so
 b664d000-b664e000 r--p 0000a000 08:01 442782     /lib/i386-linux-gnu/libnss_files-2.15.so
 b664e000-b664f000 rw-p 0000b000 08:01 442782     /lib/i386-linux-gnu/libnss_files-2.15.so
 b664f000-b6659000 r-xp 00000000 08:01 442517     /lib/i386-linux-gnu/libnss_nis-2.15.so
 b6659000-b665a000 r--p 00009000 08:01 442517     /lib/i386-linux-gnu/libnss_nis-2.15.so
 b665a000-b665b000 rw-p 0000a000 08:01 442517     /lib/i386-linux-gnu/libnss_nis-2.15.so
 b665b000-b6662000 r-xp 00000000 08:01 442803     /lib/i386-linux-gnu/libnss_compat-2.15.so
 b6662000-b6663000 r--p 00006000 08:01 442803     /lib/i386-linux-gnu/libnss_compat-2.15.so
 b6663000-b6664000 rw-p 00007000 08:01 442803     /lib/i386-linux-gnu/libnss_compat-2.15.so
 b666c000-b6670000 rw-s 00000000 00:0f 11331      /run/samba/messages.tdb
 b6670000-b6679000 rw-s 00000000 08:01 393253     /var/lib/samba/account_policy.tdb
 b6679000-b6682000 rw-s 00000000 08:01 445067     /var/lib/samba/passdb.tdb
 b6682000-b668a000 rw-s 00000000 08:01 394026     /var/cache/samba/winbindd_cache.tdb
 b668a000-b668b000 rw-s 00000000 08:01 442342     /var/cache/samba/netsamlogon_cache.tdb
 b668b000-b668d000 rw-s 00000000 00:0f 11353      /run/samba/serverid.tdb
.
.
.

Cela montre ce que le programme faisait lorsque le crash s'est produit:

ProcStatus:
 Name:  winbindd
 State: S (sleeping)
 Tgid:  1556
 Pid:   1556
 PPid:  1
 TracerPid: 0
 Uid:   0   0   0   0
 Gid:   0   0   0   0
 FDSize:    256
 Groups:    
 VmPeak:       18000 kB
 VmSize:       17880 kB
 VmLck:        0 kB
 VmPin:        0 kB
 VmHWM:     2956 kB
 VmRSS:     2956 kB
 VmData:         400 kB
 VmStk:      136 kB
 VmExe:     7668 kB
 VmLib:     8656 kB
 VmPTE:       44 kB
 VmSwap:           0 kB
 Threads:   1
 SigQ:  2/30418
 SigPnd:    0000000000000000
 ShdPnd:    0000000000000000
 SigBlk:    0000000000000400
 SigIgn:    0000000000001000
 SigCgt:    0000000180014e47
 CapInh:    0000000000000000
 CapPrm:    ffffffffffffffff
 CapEff:    ffffffffffffffff
 CapBnd:    ffffffffffffffff
 Cpus_allowed:  3
 Cpus_allowed_list: 0-1
 Mems_allowed:  1
 Mems_allowed_list: 0
 voluntary_ctxt_switches:   1215
 nonvoluntary_ctxt_switches:    11
Signal: 6
Uname: Linux 3.2.0-53-lowlatency-pae i686
UserGroups: 

Cela pourrait contenir tous vos mots de passe, soyez prudent avec ces informations:

CoreDump: base64
.
.
.
core dump looks like
aASDFNFOSIefnsldgfnsweifnLEGNi43ng3gSNSDLgn483LNdg43ls
WO$EIGNOIDGNW$INGLSDKGNSLDIGNO$WIGNLRSIGN*RW(GNDKJNLGD
*TNOIDUGNSKJDGNKSDGNSIUEGFBSGUDB*SDgUSHNEUGBSD&GSAUBSD
.
.
.
jmunsch
la source
Comment pourrais-je consulter le CoreDump?
Alex Dueppen
@ A.Dueppen doit se trouver en bas du fichier.
jmunsch
1
//, Comment cela se compare- apport-retracet-il? En outre, envisageriez-vous d'ajouter wiki.ubuntu.com/DebuggingProgramCrash à cette réponse?
Nathan Basanese
6

Voici la meilleure solution que j'ai trouvée jusqu'à présent:

apt-get install apport-retrace

Ensuite, étudiez le manuel à:

http://manpages.ubuntu.com/manpages/raring/en/man1/apport-retrace.1.html

ou

man apport-retrace

Je suis venu avec cette commande:

apport-retrace --confirm --gdb --sandbox system --verbose --cache /my/path/cache/apport-retrace --output /mypath/apport-retrace/appname.1000.crash /var/crash/_usr_bin_appname.1000.crash

Utilisez vos propres chemins (au lieu de / mon / chemin) et le nom d'application correct (au lieu de 'nom_app') dans la commande ci-dessus. Voir le manuel pour les variations de cette commande.

MountainX
la source
2
Remarque importante pour les nouveaux utilisateurs: lorsque vous décidez d'omettre l' --cache ...option, vous pensez peut-être que quelque chose ne va pas, mais ce n'est pas le cas. Une apt-getprocédure complète sera déclenchée ( sans root !) Qui peut être imaginée comme une sorte de "machine virtuelle" dans laquelle la commande en question sera exécutée. Franchement, quand c'est arrivé la première fois, je me suis juste dit "Qu'est-ce qui se passe MAINTENANT ??" En outre, soyez patient - cela prendra quelques minutes jusqu'à ce que l'environnement de débogage soit prêt à être utilisé.
erreur de syntaxe
3
Remarque supplémentaire : vous ne pouvez PAS utiliser -oresp. --outputen combinaison avec --gdb, ce n'est pas possible.
erreur de syntaxe
-2

Et bien Ubuntu avait également conçu une séquence pour vous. Son nom est D ebugging Program Crash Edit: Je viens d'entendre parler d'un programme nommé volatilité et disponible pour Ubuntu, vous pouvez installer avec

sudo apt-get install ubuntu

pour plus d'informations

rɑːdʒɑ
la source
2
Les réponses StackExchange ne doivent pas être uniquement des liens vers d'autres sites.
MountainX
// , D'accord. Pourtant, c'est un bon lien.
Nathan Basanese du