Встраивание исходного кода программы в ее двоичный файл с использованием GCC для последующего использования GDB - PullRequest
9 голосов
/ 27 ноября 2010

Мне надоело держать исходный код без изменений, пока я не закончу его отладку. Каждый раз, когда я меняю свой код, GDB начинает жаловаться на это:

предупреждение: исходный файл более поздний, чем исполняемый.

пока я не перекомпилирую, что не всегда можно сделать быстро. Я думаю, было бы замечательно, если бы было возможно включить исходный код программы в ее двоичный файл и заставить GDB использовать его вместо его современной версии.

Кто-нибудь может подсказать, как это сделать? Это вообще было реализовано?

1 Ответ

4 голосов
/ 27 ноября 2010

GCC с открытым исходным кодом - вы можете это исправить. Конечно, вам, вероятно, придется пересмотреть LD для правильной обработки информации, и вам определенно придется исправить GDB для использования встроенного источника. Вы будете использовать нестандартный формат для отладочной информации, поэтому вам, вероятно, придется изменить другие инструменты, которые манипулируют объектными файлами.

Итак, возможность есть. Но легче сделать то же самое, что и все остальные в мире, и держать свой источник в курсе, пока вы не закончите его отладку. Обычно вы можете поддерживать один сеанс GDB во время перекомпиляции исполняемого файла несколько раз, если это необходимо. И, как правило, легче отладить текущую версию кода, чем вчерашнюю версию. Если вам нужно отладить вчерашнюю версию, вам нужен вчерашний код (у вас есть хорошая VCS, не так ли?), Чтобы вы могли увидеть, что на самом деле не так со вчерашним кодом, а не с сегодняшней измененной версией кода .

Я воздаю вам должное за то, что вы задали вопрос - для того, чтобы придумать идею, нужно немного побочного мышления. Отлично сработано! Но на практике ваше предложение решительно нетривиально.

...