以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  程序无响应了,日志没有任何输出  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=84551)

--  作者:qq代人发帖
--  发布时间:2015/8/28 15:50:27
--  程序无响应了,日志没有任何输出
运行不定长时间,有时候是几天,有时候几小时,程序就无响应了,我自己做的日志也没有任何输出。在金字塔的策略中,有3个类似MID的入口,我都加了__try __except,但是没有任何的输出的。有一次我修改了参数,结果读取参数的时候越界了,就发现日志中有记录的。
我程序的代码片段:
__declspec(dllexport) int WINAPI MID(CALCINFO *calc)
{
    int     ret;

    __try
    {
        ret = __mid(calc);
    }
    __except(except_handler(GetExceptionInformation()))
    {
    }

    return ret;
}


int except_handler(LPEXCEPTION_POINTERS excep)
{
    int     i;
    PCONTEXT    context;
    unsigned long   *esp;

    context = excep->ContextRecord;
    syslog("ebp %x, eip %x, esp %x, esi %x, edi %x, eax %x, ebx %x, ecx %x\\n",
        context->Ebp, context->Eip, context->Esp, context->Esi,
        context->Edi, context->Eax, context->Ebx, context->Ecx);
    fflush(fp_syslog);
    return EXCEPTION_EXECUTE_HANDLER;
}
 
 

--  作者:王锋
--  发布时间:2015/8/28 16:09:19
--  
这样的东西我们没法去查的,建议你程序使用排除法,削减你的部分代码调用,直到找到具体的出问题的代码段,这样我们才有可能帮你一起来分析问题
--  作者:solegoose
--  发布时间:2015/8/28 16:33:58
--  
有些问题不一定在我的代码里面,你们也总需要提供某种机制,让DLL插件开发者进行调试吧。你们在程序化交易相关的代码上,有没有用上__try  __except?或者说是c++中的try catch等,如果用了,在死机前,你们那边应该能得到某种信息吧。就让我们增加,减少一些代码来调试,这个手段未免太过原始了吧。