编码转换
iconv -f GBK -t UTF-8 file -o fileout
相关链接
http://code.taobao.org/svn/tfs/
http://code.taobao.org/svn/tb-common-utils/
http://code.google.com/p/googletest/downloads/list
g++ -c tblog.cpp -o tblog.o tblog文件编译
[root@localhost test]# g++ tblog.cpp -o tblog.o
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld 返回 1
[root@localhost test]# g++ -c tblog.cpp -o tblog. 由于文件里没有main函数,必须使用-c选项
[root@localhost test]# g++ log.cpp // 需要引用其他库文件
/tmp/ccva6WC9.o: In function `main':
log.cpp:(.text+0xb1): undefined reference to `tbsys::CLogger::CLogger()'
log.cpp:(.text+0xbc): undefined reference to `tbsys::CLogger::~CLogger()'
collect2: ld 返回 1
[root@localhost test]# g++ tblog.o log.cpp // 要把.o加入build路径
g++ -c -g tblog.cpp -o tblog.o
-rw-r--r-- 1 root root 110288 03-27 05:57 tblog.o // 带调试信息,目标文件要大很多
g++ -c tblog.cpp -o tblog.o
-rw-r--r-- 1 root root 32760 03-27 05:57 tblog.o
(gdb) stepi // 按很多遍才进入代码
0x08048f72 10 logger.setFileName("tfs.log", true);
tbsys::CLogger::setFileName (this=0xbfc0c578, filename=0x804ad66 "tfs.log", flag=160) at tblog.cpp:58
58 void CLogger::setFileName(const char *filename, bool flag) {
调试进入setFileName函数
58 void CLogger::setFileName(const char *filename, bool flag) {
59 if (_name) {
60 if (_fd!=-1) close(_fd);
61 free(_name);
62 _name = NULL;
63 }
(gdb) p _name
$1 = 0x0
(gdb) p *_name
Cannot access memory at address 0x0
打印变量
(gdb) p filename
$2 = 0x804ad66 "tfs.log" // 打印传入文件名
64 _name = strdup(filename); // _name是CLogger的内部变量,存放日志所对应的文件