我遇到的问题是某些应用程序使用已创建的包含日志记录的库,我们无法重新编译正在运行的应用程序的代码,因为它们是旧版应用程序。
所以我需要在库文件中添加功能并将源代码与库文件重新链接。
在名为 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 系列 TNS\E,编译器是 Compaq ETK -NSE。