TFS编译

编码转换

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的内部变量,存放日志所对应的文件

你可能感兴趣的:(C++,c,linux,SVN,redhat)