C'è un costo considerevole (e doloroso) per gli sviluppatori che eseguono il debug di librerie esterne a causa del fatto che molte librerie sono distribuite in due edizioni: una con informazioni di debug, altre senza. Lo sviluppatore deve cercare e scaricare i file di debug e indirizzare l'ambiente di debug alla loro posizione. Questo è spesso un compito doloroso e soggetto a errori. C'è anche un sacco di lavoro relativo alla costruzione e alla distribuzione di quelle librerie.
Allo stesso tempo, il mondo è cambiato in modi che rendono obsoleta la versione "release" (cioè la versione senza informazioni di debug). Ad esempio:
- Un runtime moderno può eliminare in modo efficiente le informazioni di debug, ottimizzare al volo ed eseguire il programma alla massima velocità. Esempi sono gli interpreti JVM e JavaScript.
- I progetti open source oi file binari non pubblicati all'esterno dell'azienda non hanno motivo di essere offuscati. Inoltre, dato che molti linguaggi moderni ora supportano la riflessione, l'offuscamento mediante la rimozione delle informazioni di debug è molto limitato, se del tutto efficace.
- Lo spazio su disco è elevato, le prestazioni del disco (SDD) stanno migliorando e anche la larghezza di banda della rete sta migliorando.
Tieni presente che questa domanda è limitata alle librerie . Sono al 100% OK sulla distribuzione di applicazioni senza eseguire il debug delle informazioni, che è in realtà estremamente importante nel mondo mobile.
Dopo un sacco di problemi con PDB .NET e file .class senza informazioni di debug, penso che dovremmo evolvere processi e strumenti in un mondo in cui predefinito è per compilare e distribuire librerie con informazioni di debug, incorporate nel file binario (come i file .class), se possibile. Dopo tutto, l'unica ragione remota per non farlo è proteggere i diritti d'autore (che non si applica a molti scenari).
Naturalmente, gli strumenti che comprimono applicazioni dovrebbero essere abbastanza intelligenti da cercare e distruggere ogni pezzo di informazioni di debug incorporato prima di essere pubblicate per il download. Questo si basa sul fatto che gli utenti finali eseguono raramente il debug delle applicazioni.