标签:x86_64 目录 wal iss span alt opened c++ str
之前说过断点调试,但是针对的是单文件的断点调试。在实际应用中,一个项目是多目录多文件的
目录结构:
$ tree
.
├── gdbSomeFiles.cpp
├── Libs
│ ├── add.cpp
│ ├── add.h
│ └── makefile
└── makefile
add.h
1 #pragma once 2 3 class CAdd 4 { 5 public: 6 CAdd(void); 7 int add(int &a, int &b); 8 virtual ~CAdd(void); 9 };
add.cpp
1 #include "add.h" 2 3 CAdd::CAdd(void) 4 { 5 } 6 7 int CAdd::add(int &a, int &b) 8 { 9 int ret = a + b; 10 return ret; 11 } 12 13 CAdd::~CAdd(void) 14 { 15 }
上层makefile
1 CFLAGS=-g -Wall -pedantic -std=c++0x 2 xmain:$(OBJS) 3 # g++ ${CFLAGS} -c -I. add.cpp 4 # ar rc libadd.a add.o 5 # g++ $(CFLAGS) gdbSomeFiles.cpp -o xmain -I./Libs -L./Libs -ladd 6 g++ $(CFLAGS) gdbSomeFiles.cpp -o xmain -I./Libs -L. -ladd 7 clean: 8 rm -f xmain $(OBJS) *.o *.a *~
Libs里面的makefile
1 #OBJS=gdbSomeFiles.o 2 CFLAGS=-g -Wall -pedantic -std=c++0x 3 main: 4 g++ ${CFLAGS} -c -I. add.cpp 5 ar rc libadd.a add.o 6 mv libadd.a ../ 7 clean: 8 rm -f xmain $(OBJS) *.o *.a *~
调试:
1.图形化调试
$ gdb xmain --tui
2. 普通调试
$ gdb xmain
(gdb) list add.cpp:9
如果显示找不到第九行,则说明当前调试环境没有add.cpp的源码位置,添加add.cpp所在的目录位置即可。
(gdb) directory ./Libs/
或者 (gdb) dir ./Libs/
在add.cpp的第九行打断点
(gdb) break add.cpp:9
Breakpoint 1 at 0x40180e: file add.cpp, line 9.
(gdb) r
Starting program: /home/zhu_ying/GDBMultiFiles/xmain
Breakpoint 1, CAdd::add (this=0x7fffffffe2d0, a=@0x7fffffffe2dc, b=@0x7fffffffe2d8) at add.cpp:9
9 int ret = a + b;
Missing separate debuginfos, use: debuginfo-install libgcc-4.4.7-4.el6.x86_64 libstdc++-4.4.7-4.el6.x86_64
标签:x86_64 目录 wal iss span alt opened c++ str
原文地址:https://www.cnblogs.com/guxuanqing/p/9093767.html