zoukankan      html  css  js  c++  java
  • Unicode下TRACE中文(_CrtDbgReport: String too long or IO Error) .解决办法

    Unicode下TRACE中文(_CrtDbgReport: String too long or IO Error)       

    在使用Unicode的工程项目中,如果是Debug模式。
    当TRACE Unicode字符串时,会输出提示:_CrtDbgReport: String too long or IO Error

    有两种方法来解决这个问题


    方法一:直接使用 OutputDebugString 替换 TRACE

    相关说明:
    函数原型:void OutputDebugString(LPCTSTR lpOutputString);
    功能说明:该函数输出一个字符串给调试器用于显示
    例子:
    原语句:TRACE(_T("\n这是一个TRACE语句"));
    替换为:OutputDebugString (_T("\n这是一个TRACE语句"));
    其他相关函数:
    1. CheckRemoteDebuggerPresent:用于判断指定进程是否在调试状态
    2. ContinueDebugEvent:使调试器继续运行之前报告了debugging event的线程
    3. DebugActiveProcess:使调试器附加到一个活动进程上并进行调试
    4. DebugActiveProcessStop:停止正在调试指定进程的调试器
    5. DebugBreak:在当前进程中触发一个断点
    6. DebugBreakProcess:在指定的进程中触发一个断点
    7. DebugSetProcessKillOnExit:空白
    8. FatalExit:空白
    8. FlushInstructionCache:空白
    10. GetThreadContext:空白
    11. GetThreadSelectorEntry:空白
    12. IsDebuggerPresent:空白
    13. OutputDebugString:
    14. ReadProcessMemory:空白
    15. SetThreadContext:空白
    16. WaitForDebugEvent:空白
    17. WriteProcessMemory:空白


    方法二:调用setlocale将语言环境设置成中文
    相关说明:
    函数原型:char *setlocale(int category,const char *locale );
    功能说明:给指定的类别设置语言环境
    注意:需要将原先的语言环境保存,待使用完后将其恢复。
    例子:
    #include <locale.h>
    char* old_locale = _strdup( setlocale(LC_ALL,NULL) );   

    setlocale( LC_ALL, "chs" );              

    //正常使用TRACE,退出时调用下面函数    

    setlocale( LC_ALL, old_locale);
    free(old_locale);
    其他相关函数:
    1. char *_strdup(const char *strSource );
       调用malloc分配内存,并将源字符串复制一份,需要用free释放。

    //======================================================================
    优缺点比较:
    方法一:优点:不需要增加任何函数调用,可以直接使用OutputDebugString输出字符串
                    缺点:不能格式化输出。需要预先将字符串格式化
    方法二:优点:可以直接使用TRACE,不加任何改变
                    缺点:需要进行例子中的操作。

    疑问:

    1. 调用char* plocale = setlocale(LC_ALL,NULL);    返回值是"C."对吗?

  • 相关阅读:
    Babel 7.x 和 Babel 8.x的区别
    JavaScript——Set 的用法
    DFS 和 BFS
    JavaScript——event事件详解
    Day17-18前端学习之路——Javascript事件
    Day17-18前端学习之路——常用语句资料库
    Day5前端学习之路——盒模型和浮动
    Day7前端学习之路——多栏布局
    如何在GitHub预览html
    新人上路请教一个输入字符的问题
  • 原文地址:https://www.cnblogs.com/lidabo/p/2839433.html
Copyright © 2011-2022 走看看