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."对吗?

  • 相关阅读:
    20145202马超《网络对抗》Exp9*_* Web安全基础实践
    20145202马超《java》【课堂实验】P98测试
    20145202马超 2016-2017-2 《Java程序设计》第11周学习总结
    20145202马超《网络对抗》Exp8 Web基础
    20145202马超 2016-2017-2 《Java程序设计》第三次实验
    20145202马超 2016-2017-2 《Java程序设计》第10周学习总结
    20145202马超《网络对抗》Exp7 网络欺诈技术防范
    20145202马超 2016-2017-2 《Java程序设计》第二次实验
    20145202马超 2016-2017-2 《Java程序设计》第9周学习总结
    20145202马超《网络对抗》Exp6 信息搜集与漏洞扫描
  • 原文地址:https://www.cnblogs.com/lidabo/p/2839433.html
Copyright © 2011-2022 走看看