GDB不显示代码状态
我有很多使用-ggdb3标志编译的源代码。 我已将源代码和可执行文件复制到另一台机器上。 当我在gdb中运行exe时,它在中断时不会在行号处显示语句 这就是我所看到的GDB不显示代码状态,gdb,Gdb,我有很多使用-ggdb3标志编译的源代码。 我已将源代码和可执行文件复制到另一台机器上。 当我在gdb中运行exe时,它在中断时不会在行号处显示语句 这就是我所看到的 Breakpoint 1, TestCode (handler=0x806e110, args=0xffffd2b0) at ../myfile.c:1080 1080 ../myfile.c: No such file or directory. (gdb) n 1083 in ../myfile.c (gd
Breakpoint 1, TestCode (handler=0x806e110, args=0xffffd2b0)
at ../myfile.c:1080
1080 ../myfile.c: No such file or directory.
(gdb) n
1083 in ../myfile.c
(gdb)
1084 in ../myfile.c
(gdb)
1085 in ../myfile.c
我甚至尝试使用gdb dir命令设置dir路径,给出源代码最顶层目录的名称,但没有任何帮助。
示例我的源代码目录结构如下
C
|
--------------
| |
D E
|
F
|
-----------
| |
S T
我正在调试的文件可能在某个内部文件夹中,例如F。
而我在gdb dir中给出了文件夹C的路径
dir /home/C
有办法解决这个问题吗
详情如下:
> OS SUSE Linux Enterprise Server 11 (x86_64)
> gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux)
> GNU gdb (GDB) SUSE (7.5.1-0.7.29)
下面是Makefile的详细信息
#
# Makefile for building demo code on SUSE Linux
all : SLIBINSTALLDIR = $(SDESTDIR)$(SLIBDIR)
###########################################
# Defines #
###########################################
CC = --mode=compile gcc
LINK =$(DESTDIR)libtool --mode=link gcc
INDEPSDIR = ../../../../../dependencies/internal
MODULE = TestCode
INCLUDE = -I../ -I$(INDEPSDIR)/include
CFLAGS := $(CFLAGS) $(INCLUDE) -DN_PLAT_UNIX -DN_PLAT_GNU -DVERSION=0x00010002 -D_GNU_SOURCE -g -ggdb3
CSRC = ../myfile.c ../decode.c ../encode.c
COBJ = $(CSRC:.c=.o)
COBJ1 = $(CSRC:.c=.lo)
TestCode:$(COBJ)
$(LINK) $(CFLAGS) -o TestCode $(COBJ1) -all-static
DESRC = ../main.c
DEOBJ = $(DESRC:.c=.o)
应使用以下命令定义源路径替换规则:
set substitute-path from to
它将从
部分替换为到
,允许在新位置查找源。
看
另外,
info sources
命令将有助于记住上述命令中的部分,以防您在复制之前忘记了源的位置。您可以发布完整的compile语句和完整的gdb语句吗?您使用的是什么操作系统、什么编译器以及什么GDB版本?如果在GDB dir中添加每个文件的完整路径,那么它将显示正确的行详细信息。但是在dir中添加每一个文件名都是乏味的。