gdb调试,显示utf-8字符
来源:互联网 发布:ahc淘宝旗舰店真的吗 编辑:程序博客网 时间:2024/05/28 15:14
gdb本身只支持ASCII, ISO-8859-1,set charset可以查看。直接print utf8的中文字符会出现乱码,
看到网上有个解决方法是在调试程序中加入一个打印的函数,感觉比较好用,分享
一下。
将如下代码和main函数放在一起,调试的时候 call pstring(s)就行。
void pstring(string& s){ for (int i = 0; i < s.length(); i ++){ int len = 0; if(s[i] < 0) {// multi-bytes utf-8 stream unsigned char h = static_cast<unsigned char>(s[i]); if(h >> 4 == 0x0E) len = 3; // 1110XXXX 10XXXXXX 10XXXXXX if(h >> 5 == 0x06) len = 2; // 110XXXXX 10XXXXXX if(h >> 3 == 0x1E) len = 4; // 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX if(h >> 2 == 0x3E) len = 5; // 111110xx 10XXXXXX 10XXXXXX 10XXXXXX10XXXXXX if(h >> 1 == 0x7E) len = 6; // 1111110x 10XXXXXX 10XXXXXX 10XXXXXX10XXXXXX 10XXXXXX } else if (s[i] == 0) return; else len = 1; // ascii, 0XXXXXXX string tmp = s.substr(i,len); tmp += "/0"; cout<<tmp; } cout<<'/n'; fflush(stdout);}
void pstring(char * str){ string s=str; for (int i = 0; i < s.length(); i ++){ int len = 0; if(s[i] < 0) {// multi-bytes utf-8 stream unsigned char h = static_cast<unsigned char>(s[i]); if(h >> 4 == 0x0E) len = 3; // 1110XXXX 10XXXXXX 10XXXXXX if(h >> 5 == 0x06) len = 2; // 110XXXXX 10XXXXXX if(h >> 3 == 0x1E) len = 4; // 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX if(h >> 2 == 0x3E) len = 5; // 111110xx 10XXXXXX 10XXXXXX 10XXXXXX10XXXXXX if(h >> 1 == 0x7E) len = 6; // 1111110x 10XXXXXX 10XXXXXX 10XXXXXX10XXXXXX 10XXXXXX } else if (s[i] == 0) return; else len = 1; // ascii, 0XXXXXXX string tmp = s.substr(i,len); tmp += "/0"; cout<<tmp; } cout<<'/n'; fflush(stdout);}
- gdb调试,显示utf-8字符
- 让Windows命令行显示UTF-8字符
- gdb显示汇编调试
- gdb调试时显示数组
- 如何在DOS窗口中显示UTF-8字符
- 如何在DOS窗口中显示UTF-8字符
- 如何在DOS窗口中显示UTF-8字符
- 如何在DOS窗口中显示UTF-8字符[转]
- 解决DOS窗口中显示UTF-8字符问题
- 如何在DOS窗口中显示UTF-8字符
- windows的cmd终端显示utf-8字符
- 如何在DOS窗口中显示UTF-8字符
- 如何在DOS窗口中显示UTF-8字符
- 如何让Windows命令行显示UTF-8字符
- 如何在DOS窗口中显示UTF-8字符
- windows的cmd终端显示utf-8字符
- 如何在DOS窗口中显示UTF-8字符
- 如何在DOS窗口中显示UTF-8字符
- 各种工具之正则表达式语法比较
- 控制台跨库数据传送方法一之"利用SqlBulkCopy"
- 火狐浏览器和IE的CSS区别
- Launcher 类及类关系分析
- ARM立即数,LDR和MOV的区别
- gdb调试,显示utf-8字符
- java访问WebService接口返回xml
- 利用canvas画text时的换行实现
- WordPress中如何实现Ping功能
- 智能常识 ROM RAM
- 比较StreamReader的read()与FileStream的read()
- 关于C#中的StreamReader与FileStream这两个类
- 原型 模式
- 转!转!转! 白师傅的 嗯 受教