【问题标题】:GDB not displaying code statmentsGDB 不显示代码语句
【发布时间】:2014-06-06 13:33:57
【问题描述】:

我有一堆使用 -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
(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)

【问题讨论】:

  • 能贴出完整的编译语句和完整的gdb语句吗?您使用的是什么操作系统、什么编译器以及什么 GDB 版本?
  • 如果在 gdb 目录中添加每个文件的完整路径,那么它会显示正确的行详细信息。但是在 dir 中添加每个文件名很繁琐。

标签: gdb


【解决方案1】:

您应该使用命令定义源路径替换规则:

set substitute-path from to

它将from 部分替换为to 允许在新位置查找源。 见https://sourceware.org/gdb/onlinedocs/gdb/Source-Path.html

还有info sources 命令将有助于记住上面命令中的from 部分,以防您在复制之前忘记了源的位置。

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多