Possiedo un programma che intendo distribuire agli utenti finali e vorrei ricevere i rapporti di arresto anomalo da essi. Se usassi MSVC, genererei minidump e li invierei, quindi li ispezionerò con il PDB corrispondente per ottenere una traccia di stack utile, come minimo.equivalente GCC di PDB
Qual è l'equivalente di fare questo con GCC? Posso generare una traccia dello stack, ma se voglio che questo sia utile, richiede che i simboli di debug vengano compilati nell'eseguibile (con -g). Ovviamente questo è inaccettabile per la distribuzione del rilascio, dal momento che l'eseguibile può ingigantire un po 'di dimensioni.
Googled un po 'e ho trovato riferimenti a objcopy essere in grado di separare i simboli di debug in un file separato, ma quella pagina implicito avrei ancora bisogno di avere i simboli di debug disponibili a fianco l'eseguibile di rilascio, che è di nuovo ovviamente inaccettabile.
Va bene, ma come faccio a riconciliare una traccia di stack generata senza simboli di debug (e quindi contenente solo indirizzi) con i simboli di debug separati in seguito, per ottenere una traccia di stack che posso effettivamente leggere? – pjohansson
gdb può impostare l'uso di simboli di debug separati, questo è il modo in cui le distribuzioni Linux abilitano il debug, vedere http://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html – ismail
Questa pagina sembra anche dare per scontato che le informazioni di debug è presente sul computer dove si manifesta l'errore. Chiarirò: non possiamo spedire le informazioni di debug ai nostri clienti. È necessario che il software generi una traccia di stack (senza simboli di debug) e che questa traccia di stack sia riconciliata con simboli di debug separati su uno dei nostri computer di sviluppo qui in una fase successiva, senza ulteriore coinvolgimento da parte del client. Dovrei forse anche chiarire che questo è un ambiente Windows, non uno * nix. – pjohansson