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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值