Come posso includere i numeri di riga in una traccia stack senza un pdb?

Attualmente stiamo distribuendo un’app WinForms senza file .pdb per risparmiare spazio sui computer client e scaricare larghezza di banda. Quando riceviamo tracce di stack, stiamo ricevendo i nomi dei metodi ma non i numeri di riga. C’è un modo per ottenere i numeri di riga senza ricorrere alla distribuzione dei file .pdb?

Non è ansible ottenere una traccia stack con numeri di linea direttamente dall’applicazione, a meno che non si impacchetta il PDB. Tuttavia , se si dispone dei file PDB per la stessa versione dell’app che si inviano ai propri clienti, e non ci si preoccupa di alcuni script chiari, è ansible trasformare la traccia dello stack .NET e gli offset IL in numeri di linea.

Durante il processo di compilazione, utilizza il convertitore pdb2xml di Mike Stall , distribuito come parte del suo eccellente debugger di codice gestito da MDbg , e memorizzale in un luogo sicuro (ad esempio, il controllo del codice sorgente). Quando si ottiene una traccia di stack dal client, è ansible interrogare l’offset IL dai dati XML per determinare il numero di riga pertinente. Se le tracce dello stack vengono inviate a un sito Web, puoi perfino automatizzare la conversione, in modo che gli sviluppatori possano già ottenere tracce dello stack completamente dettagliate nel momento in cui i casi raggiungono la loro posta in arrivo.

No. I numeri di riga fanno parte delle informazioni di debug, che vengono memorizzate solo nel file PDB. Questo è il motivo per cui i file PDB esistono in primo luogo.

Non è la risposta appropriata alla tua domanda, ma ho un suggerimento. È ansible incorporare un meccanismo di registrazione e ottenere questi file di registro accanto alle tracce dello stack. Se si includono numeri di riga nei messaggi di registro, è ansible combinare manualmente le informazioni di registrazione con la traccia dello stack.

Se non si desidera occupare molto spazio, è ansible utilizzare file di registro di dimensioni limitate, in questo modo verranno conservati solo i messaggi di registro più recenti.

Usiamo la libreria log4net per le nostre esigenze di registrazione, vi consiglio di dare un’occhiata.

No non c’è. Tutte le informazioni necessarie per mappare le linee di IL al file sorgente originale e il numero di riga sono memorizzati nel PDB. Non è ansible ottenere queste informazioni nello stack trace senza il PDB.