Ich bin es leid, meinen Quellcode unberührt zu lassen, bis ich mit seinem Debuggen fertig bin. Jedes Mal, wenn ich meinen Code ändere, beginnt GDB sich darüber zu beschweren:Einbetten eines Programms Quellcode in seine Binärdatei mit GCC für die spätere Verwendung von GDB
Warnung: Quelldatei ist aktueller als ausführbare Datei.
bis ich es neu kompilieren, was nicht immer schnell erledigt werden kann. Ich denke, es wäre großartig, wenn es möglich wäre, den Quellcode eines Programms in seine Binärdatei aufzunehmen und GDB anstelle seiner aktuellen Version verwenden zu lassen.
Kann jemand einen Weg vorschlagen, wie man es macht? Wurde das überhaupt umgesetzt?
Sicher habe ich nicht genug Zeit/Fähigkeit/Geduld/muss es als neues Feature implementieren, aber ich bin ziemlich überrascht, dass es noch nicht implementiert wurde. Obwohl ich zustimme, dass es in den meisten Fällen nicht benötigt wird, kann es manchmal von Nutzen sein. Zum Beispiel starte ich einen Debugger mit meiner alten Binärdatei, um herauszufinden, was falsch ist. Ich finde die Ursache des Problems, aber dann, direkt nachdem ich die Hälfte des Codes geschrieben und gespeichert habe, stürzt die GDB-Sitzung aufgrund eines Tippfehlers ab. Jetzt muss ich entweder den Code ohne Hilfe des Debuggers reparieren oder ein Rollback durchführen, das Programm neu erstellen, GDB ausführen und die Änderungen rückgängig machen! – undercat
@vovick: Es gibt mindestens zwei Gründe. Eines ist historisch: Die reichlichen verfügbaren Ressourcen waren nicht immer verfügbar, und die Leute fühlten (wahrscheinlich zu Recht), dass es besser war, den debuggablen Code nicht mit der tatsächlichen Quelle zu verwischen, da dies zu viel Speicherplatz und Speicher erfordern würde. Früher war es schwer genug, das Programm in den Speicher zu pushen - geschweige denn die zusätzlichen Debugging-Informationen hinzuzufügen. Das andere ist praktisch: Die Leute finden es nicht so schwer, die relevante Quelle verfügbar zu halten, um Putten zu rechtfertigen die Anstrengung in das Tun, wie Sie vorschlagen. –