Вот быстрое решение. Строковые литералы в программе c/c++ обычно помещаются в сегмент файла ELF, доступный только для чтения.
Предполагая, что ваш комментарий следует шаблону:
My_Comment: ....
вы можете добавить некоторые определения строк в свою программу:
#include <stdio.h>
void main() {
char* a = "My Comment: ...";
}
скомпилировать:
$ gcc test.c
а затем найдите свой шаблон комментария в исполняемом файле:
$ strings a.out | grep Comment
My Comment: ...
могу я спросить, каков вариант использования встраивания комментариев в исполняемый файл?
Следовать за:
Если вы компилируете с флагом -O3, эта неиспользуемая строка оптимизируется, поэтому она вообще не сохраняется в данных ro. Основываясь на той же идее, вы можете обмануть gcc:
#include <stdio.h>
void main() {
FILE* comment = fopen("/dev/null", "w");
fprintf(comment, "My Comment:");
}
Затем найдите свой комментарий. Конечно, вы получаете накладные расходы на 2 или 3 системных вызова, но, надеюсь, вы сможете с этим смириться.
Дайте мне знать, если это сработает!
person
sestus
schedule
22.09.2015