当前位置: 首页>>代码示例>>C++>>正文


C++ DumpBuffer::TruncateLines方法代码示例

本文整理汇总了C++中DumpBuffer::TruncateLines方法的典型用法代码示例。如果您正苦于以下问题:C++ DumpBuffer::TruncateLines方法的具体用法?C++ DumpBuffer::TruncateLines怎么用?C++ DumpBuffer::TruncateLines使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DumpBuffer的用法示例。


在下文中一共展示了DumpBuffer::TruncateLines方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: WinAssert

void _cdecl WinAssert(char * text, char * filename, int linenum, const char * format, ... )
{
    int val;
    va_list args;

    memset( AssertText1, 0, sizeof(AssertText1) );
    memset( AssertText2, 0, sizeof(AssertText2) );

    va_start(args, format);
    vsnprintf(AssertText2, sizeof(AssertText2)-1, format, args);
    va_end(args);

    // this stuff migt be really useful for solving bug reports and user errors. We should output it! 
    mprintf(("ASSERTION: \"%s\" at %s:%d\n %s\n", text, strrchr(filename, '\\')+1, linenum, AssertText2 ));

#ifdef Allow_NoWarn
    if (Cmdline_nowarn) {
        return;
    }
#endif

    Messagebox_active = true;

    gr_activate(0);

    filename = strrchr(filename, '\\')+1;
    snprintf( AssertText1, sizeof(AssertText1)-1, "Assert: %s\r\nFile: %s\r\nLine: %d\r\n%s\r\n", text, filename, linenum, AssertText2 );

#if defined( SHOW_CALL_STACK ) && defined( PDB_DEBUGGING )
    /* Dump the callstack */
    SCP_DebugCallStack callStack;
    SCP_DumpStack( dynamic_cast< SCP_IDumpHandler* >( &callStack ) );
    
    /* Format the string */
    SCP_string assertString( AssertText1 );
    assertString += "\n";
    assertString += callStack.DumpToString( );
    
    /* Copy to the clipboard */
    dump_text_to_clipboard( assertString.c_str( ) );

    // truncate text
    truncate_message_lines(assertString, Messagebox_lines);

    assertString += "\n[ This info is in the clipboard so you can paste it somewhere now ]\n";
    assertString += "\n\nUse Ok to break into Debugger, Cancel to exit.\n";
    val = MessageBox( NULL, assertString.c_str( ), "Assertion Failed!", MB_OKCANCEL | flags );

#elif defined ( SHOW_CALL_STACK	)
    dumpBuffer.Clear();
    dumpBuffer.Printf( AssertText1 );
    dumpBuffer.Printf( "\r\n" );
    DumpCallsStack( dumpBuffer ) ;  
    dump_text_to_clipboard(dumpBuffer.buffer);

    // truncate text
    dumpBuffer.TruncateLines(Messagebox_lines);

    dumpBuffer.Printf( "\r\n[ This info is in the clipboard so you can paste it somewhere now ]\r\n" );
    dumpBuffer.Printf( "\r\n\r\nUse Ok to break into Debugger, Cancel to exit.\r\n");

    val = MessageBox(NULL, dumpBuffer.buffer, "Assertion Failed!", MB_OKCANCEL|flags );
#else
    val = MessageBox(NULL, AssertText1, "Assertion Failed!", MB_OKCANCEL|flags );
#endif

    if (val == IDCANCEL)
        exit(1);

    Int3();

    gr_activate(1);

    Messagebox_active = false;
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:75,代码来源:windebug.cpp

示例2: Error

void _cdecl Error( const char * filename, int line, const char * format, ... )
{
    Global_error_count++;

    int val;
    va_list args;

    memset( AssertText1, 0, sizeof(AssertText1) );
    memset( AssertText2, 0, sizeof(AssertText2) );

    va_start(args, format);
    vsnprintf(AssertText1, sizeof(AssertText1)-1, format, args);
    va_end(args);

    filename = strrchr(filename, '\\')+1;
    snprintf(AssertText2, sizeof(AssertText2)-1, "Error: %s\r\nFile: %s\r\nLine: %d\r\n", AssertText1, filename, line);
    mprintf(("ERROR: %s\r\nFile: %s\r\nLine: %d\r\n", AssertText1, filename, line));

    Messagebox_active = true;

    gr_activate(0);

#if defined( SHOW_CALL_STACK ) && defined( PDB_DEBUGGING )
    /* Dump the callstack */
    SCP_DebugCallStack callStack;
    SCP_DumpStack( dynamic_cast< SCP_IDumpHandler* >( &callStack ) );
    
    /* Format the string */
    SCP_string assertString( AssertText1 );
    assertString += "\n";
    assertString += callStack.DumpToString( );
    
    /* Copy to the clipboard */
    dump_text_to_clipboard( assertString.c_str( ) );

    // truncate text
    truncate_message_lines(assertString, Messagebox_lines);

    assertString += "\n[ This info is in the clipboard so you can paste it somewhere now ]\n";
    assertString += "\n\nUse Ok to break into Debugger, Cancel to exit.\n";
    val = MessageBox( NULL, assertString.c_str( ), "Error!", flags | MB_DEFBUTTON2 | MB_OKCANCEL );

#elif defined( SHOW_CALL_STACK )
    dumpBuffer.Clear();
    dumpBuffer.Printf( AssertText2 );
    dumpBuffer.Printf( "\r\n" );
    DumpCallsStack( dumpBuffer ) ;  
    dump_text_to_clipboard(dumpBuffer.buffer);

    // truncate text
    dumpBuffer.TruncateLines(Messagebox_lines);

    dumpBuffer.Printf( "\r\n[ This info is in the clipboard so you can paste it somewhere now ]\r\n" );
    dumpBuffer.Printf( "\r\n\r\nUse Ok to break into Debugger, Cancel exits.\r\n");

    val = MessageBox(NULL, dumpBuffer.buffer, "Error!", flags | MB_DEFBUTTON2 | MB_OKCANCEL );
#else
    strcat_s(AssertText2,"\r\n\r\nUse Ok to break into Debugger, Cancel exits.\r\n");

    val = MessageBox(NULL, AssertText2, "Error!", flags | MB_DEFBUTTON2 | MB_OKCANCEL );
#endif

    switch (val)
    {
        case IDCANCEL:
            exit(1);

        default:
            Int3();
            break;
    }

    gr_activate(1);

    Messagebox_active = false;
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:76,代码来源:windebug.cpp

示例3: Warning

void _cdecl Warning( char *filename, int line, const char *format, ... )
{
    Global_warning_count++;

#ifndef NDEBUG
    va_list args;
    int result;
    int i;
    int slen = 0;

    // output to the debug log before anything else (so that we have a complete record)

    memset( AssertText1, 0, sizeof(AssertText1) );
    memset( AssertText2, 0, sizeof(AssertText2) );

    va_start(args, format);
    vsnprintf(AssertText1, sizeof(AssertText1) - 1, format, args);
    va_end(args);

    slen = strlen(AssertText1);

    // strip out the newline char so the output looks better
    for (i = 0; i < slen; i++){
        if (AssertText1[i] == (char)0x0a) {
            AssertText2[i] = ' ';
        } else {
            AssertText2[i] = AssertText1[i];
        }
    }

    // kill off extra white space at end
    if (AssertText2[slen-1] == (char)0x20) {
        AssertText2[slen-1] = '\0';
    } else {
        // just being careful
        AssertText2[slen] = '\0';
    }

    mprintf(("WARNING: \"%s\" at %s:%d\n", AssertText2, strrchr(filename, '\\')+1, line));

    // now go for the additional popup window, if we want it ...
#ifdef Allow_NoWarn
    if (Cmdline_nowarn) {
        return;
    }
#endif

    filename = strrchr(filename, '\\')+1;
    sprintf(AssertText2, "Warning: %s\r\nFile: %s\r\nLine: %d\r\n", AssertText1, filename, line );

    Messagebox_active = true;

    gr_activate(0);

#if defined( SHOW_CALL_STACK ) && defined( PDB_DEBUGGING )
    /* Dump the callstack */
    SCP_DebugCallStack callStack;
    SCP_DumpStack( dynamic_cast< SCP_IDumpHandler* >( &callStack ) );
    
    /* Format the string */
    SCP_string assertString( AssertText1 );
    assertString += "\n";
    assertString += callStack.DumpToString( );
    
    /* Copy to the clipboard */
    dump_text_to_clipboard( assertString.c_str( ) );

    // truncate text
    truncate_message_lines(assertString, Messagebox_lines);

    assertString += "\n[ This info is in the clipboard so you can paste it somewhere now ]\n";
    assertString += "\n\nUse Yes to break into Debugger, No to continue.\nand Cancel to Quit\n";
    result = MessageBox( NULL, assertString.c_str( ), "Warning!", MB_YESNOCANCEL | MB_DEFBUTTON2 | MB_ICONWARNING | flags );

#elif defined ( SHOW_CALL_STACK	)
    //we don't want to dump the call stack for every single warning
    Dump_to_log = false; 

    dumpBuffer.Clear();
    dumpBuffer.Printf( AssertText2 );
    dumpBuffer.Printf( "\r\n" );
    DumpCallsStack( dumpBuffer ) ;  
    dump_text_to_clipboard(dumpBuffer.buffer);

    // truncate text
    dumpBuffer.TruncateLines(Messagebox_lines);

    dumpBuffer.Printf( "\r\n[ This info is in the clipboard so you can paste it somewhere now ]\r\n" );
    dumpBuffer.Printf("\r\n\r\nUse Yes to break into Debugger, No to continue.\r\nand Cancel to Quit");

    result = MessageBox((HWND)os_get_window(), dumpBuffer.buffer, "Warning!", MB_YESNOCANCEL | MB_DEFBUTTON2 | MB_ICONWARNING | flags );

    Dump_to_log = true; 

#else
    strcat_s(AssertText2,"\r\n\r\nUse Yes to break into Debugger, No to continue.\r\nand Cancel to Quit");
    result = MessageBox((HWND)os_get_window(), AssertText2, "Warning!", MB_YESNOCANCEL | MB_DEFBUTTON2 | MB_ICONWARNING | flags );
#endif

    switch (result)
//.........这里部分代码省略.........
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:101,代码来源:windebug.cpp

示例4: LuaError


//.........这里部分代码省略.........
        memset(AssertText1, 0, sizeof(AssertText1));
        memset(AssertText2, 0, sizeof(AssertText2));

        va_start(args, format);
        vsnprintf(AssertText1, sizeof(AssertText1)-1, format,args);
        va_end(args);

        dumpBuffer.Printf(AssertText1);
    }

    dumpBuffer.Printf( "\r\n" );
    dumpBuffer.Printf( "\r\n" );

    //WMC - This is virtually worthless.
/*
    dumpBuffer.Printf(Separator);
    dumpBuffer.Printf( "LUA Debug:" );
    dumpBuffer.Printf( "\r\n" );
    dumpBuffer.Printf(Separator);

    lua_Debug ar;
    if(lua_getstack(L, 0, &ar))
    {
        lua_getinfo(L, "nSlu", &ar);
        LuaDebugPrint(ar);
    }
    else
    {
        dumpBuffer.Printf("(No stack debug info)\r\n");
    }
*/
//	TEST CODE

    dumpBuffer.Printf(Separator);
    dumpBuffer.Printf( "ADE Debug:" );
    dumpBuffer.Printf( "\r\n" );
    dumpBuffer.Printf(Separator);
    LuaDebugPrint(Ade_debug_info);
    dumpBuffer.Printf(Separator);

    dumpBuffer.Printf( "\r\n" );
    dumpBuffer.Printf( "\r\n" );

    AssertText2[0] = '\0';
    dumpBuffer.Printf(Separator);
    
    // Get the stack via the debug.traceback() function
    lua_getglobal(L, LUA_DBLIBNAME);

    if (!lua_isnil(L, -1))
    {
        dumpBuffer.Printf( "\r\n" );
        lua_getfield(L, -1, "traceback");
        lua_remove(L, -2);

        if (lua_pcall(L, 0, 1, 0) != 0)
            dumpBuffer.Printf("Error while retrieving stack: %s", lua_tostring(L, -1));
        else
            dumpBuffer.Printf(lua_tostring(L, -1));

        lua_pop(L, 1);
    }
    else
    {
        // If the debug library is nil then fall back to the default debug stack
        dumpBuffer.Printf("LUA Stack:\r\n");
        int i;
        for (i = 0; i < 4; i++) {
            if (debug_stack[i][0] != '\0')
                dumpBuffer.Printf("\t%s\r\n", debug_stack[i]);
        }
    }
    dumpBuffer.Printf( "\r\n" );

    dumpBuffer.Printf(Separator);
    ade_stackdump(L, AssertText2);
    dumpBuffer.Printf( AssertText2 );
    dumpBuffer.Printf( "\r\n" );
    dumpBuffer.Printf(Separator);

    dump_text_to_clipboard(dumpBuffer.buffer);

    // truncate text
    dumpBuffer.TruncateLines(Messagebox_lines);

    dumpBuffer.Printf( "\r\n[ This info is in the clipboard so you can paste it somewhere now ]\r\n" );
    dumpBuffer.Printf( "\r\n\r\nUse Yes to break into Debugger, No to continue.\r\nand Cancel to Quit");

    val = MessageBox(NULL, dumpBuffer.buffer, "Error!", flags|MB_YESNOCANCEL );

    if (val == IDCANCEL ) {
        exit(1);
    } else if(val == IDYES) {
        Int3();
    }

    gr_activate(1);

    Messagebox_active = false;
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:101,代码来源:windebug.cpp


注:本文中的DumpBuffer::TruncateLines方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。