проблема, с которой я сталкиваюсь, заключается в том, что некоторые приложения используют библиотеку, которая была создана для включения ведения журнала, мы не можем перекомпилировать код для работающих приложений, поскольку они являются устаревшими приложениями.
поэтому мне нужно добавить функциональность в файл библиотеки и повторно связать исходный код с файлами библиотеки.
функция, определенная в библиотечном файле с именем DEBUG_DATA()
-> возвращает строку имени функции и т. д. -> эта функция уже используется в приложении, что мне нужно сделать, так это выполнить эту функцию DEBUG_DATA. Мне нужно добавить событие и вызвать событие после возврата функции, которая вызывает debug_data.
можно ли создать триггер для события в c, где триггер не вызывается? можно ли это сделать во время выполнения? как в настройке стека?
РЕДАКТИРОВАТЬ: это добавлено в DEBUG_DATA():
void Dynatrace_Method_START(
const char *ms_FunctionName, const char *ms_FileName, int ms_LineNO)
{
#ifdef DT_USE /*a global variable needs to be initiated for stack trace lets call it int Dyna_M_SERIAL*/
DT_Current_Stack++;
if (DT_Current_Stack<=DT_STACK) {
// FILE_NAME_STRIPPER(ms_FileName);
Dyna_M_SERIAL++;
fprintf(pfile,"%d,mstart,%s,%s,%d,%s,%d\r\n",
Dyna_UID, ms_FunctionName, FILE_NAME_STRIPPER(ms_FileName), ms_LineNO,
sProgram_name, Dyna_M_SERIAL);
Line_Reference[Dyna_M_SERIAL]=ms_LineNO;
}
#endif
}
ОС — Guardian H Series TNS\E, компилятор — Compaq ETK-NSE.
debug_data()
вы просто создаете экземпляр объекта, конструктор которого вызывает существующую функцию debug_data(), а деструктор вызывает вашу новую функцию события. (Это возможно для кода C++, а не для C) - person nos   schedule 04.09.2013DEBUG_DATA()
на самом деле является функцией, а не макросом препроцессора? Единственный известный мне способ получить имя исходного файла, имя функции и номер строки — это использовать макросы, такие как__FUNCTION__
,__FILE__
,__LINE__
и т. д. Поскольку они возвращают значения текущей функции, они обычно заключаются в макросы для которые затем вызывают фактическую функцию отладки. Например,#define DEBUG_DATA() debug_data_func(__FILE__, __FUNCTION__, __LINE__)
или просто поработайте со строкой#define DEBUG_DATA() "File: " __FILE__ " Function: " __FUNCTION__ " Line: " __LINE__
- person David M. Syzdek   schedule 04.09.2013