Возможно ли узнать аргументы функции и типы имен переменных во время выполнения в программе C? Например, если у меня есть функция:имя переменной, аргументы функции во время выполнения в C
int abc(int x, float y , somestruct z){
char a;
int b ;
}
Могу ли я знать, внутри этой функции abc()
, какие имена аргументов и переменных т.е. в этом случае его x
, y
, z
, a
, b
и они имеют тип int
, float
, somestruct
, char
, int
.
Скажем, если есть еще одна функция:
float some_func(specialstruct my_struct, int index){
}
я должен знать, что имя аргументы my_struct
, index
и типы specialstruct
, int
.
Мне нужна эта информация во время выполнения?
У меня есть доступ к указателю базы и обратному адресу, могу ли я получить необходимую информацию с помощью указателя сверху.
Мне удалось извлечь имя функции, используя обратный адрес и dladdr()
функция.
Я вижу GDB
делает это, поэтому должна быть возможность извлечь эту информацию?
Зачем вам эти имена во время выполнения? Что вы можете с ними сделать? – Mat
C - это скомпилированный язык. Как только программа была скомпилирована (или, другими словами, после ее преобразования в машинный код), все имена переменных, имена функций и т. Д. Исчезли. Итак, ответ: Нет. С другой стороны, GDB знает имена переменных и функций, потому что программа была скомпилирована со специальными параметрами, но это полезно только для отладки. –
'gdb' использует отладочную информацию, которая генерируется компилятором. См. Http://eli.thegreenplace.net/2011/02/07/how-debuggers-work-part-3-debugging-information/ – purplepsycho