1

我遇到的问题是某些应用程序使用已创建的包含日志记录的库,我们无法重新编译正在运行的应用程序的代码,因为它们是旧版应用程序。

所以我需要在库文件中添加功能并将源代码与库文件重新链接。

在名为 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。

4

0 回答 0