gdb调试kaldi
kaldi.mk
在/data1/kaldi/kaldi-trunk/src/
下,有一个kaldi.mk
文件,部分内容如何:
DEBUG_LEVEL = 1
CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \
-Wall -Wno-sign-compare -Wno-unused-local-typedefs \
-Wno-deprecated-declarations -Winit-self \
-DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \
-DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -I$(ATLASINC) \
-msse -msse2 -pthread
【操作】
将DEBUG_LEVEL值设为2
-O1修改为-O0
加上-g
加上-lrt【用于linux下的#include<time.h>】
【最后效果】
CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O0 $(EXTRA_CXXFLAGS) \
-Wall -Wno-sign-compare -Wno-unused-local-typedefs \
-Wno-deprecated-declarations -Winit-self \
-DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \
-DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -I$(ATLASINC) \
-msse -msse2 -pthread -lrt \
-g
将需要调试的模块重新make即可,然后用cgdb或egdb去断点调试。