首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用list命令时GDB不显示源代码

使用list命令时,GDB不显示源代码可能是由于以下几个原因导致的:

  1. 编译时未包含调试信息:GDB需要可执行文件中包含调试信息才能显示源代码。在编译时,需要使用-g选项来生成调试信息。例如,使用gcc编译C程序时,可以使用以下命令:gcc -g source.c -o executable
  2. 源代码文件不存在或路径错误:GDB需要找到源代码文件才能显示源代码。请确保源代码文件存在,并且路径正确。可以使用dir命令告诉GDB源代码文件的路径,例如:dir /path/to/source/code
  3. GDB当前工作目录与源代码文件所在目录不一致:GDB在运行时的当前工作目录可能与源代码文件所在的目录不一致,导致无法找到源代码文件。可以使用cd命令切换到源代码文件所在的目录,然后再使用list命令。
  4. 源代码文件被删除或修改:如果在GDB启动后,源代码文件被删除或修改,GDB将无法显示源代码。需要重新启动GDB,并确保源代码文件存在且未被修改。
  5. GDB版本不兼容:某些GDB版本可能存在bug或不支持某些功能。可以尝试升级GDB到最新版本,或者使用其他版本的GDB。

总结起来,要解决GDB不显示源代码的问题,需要确保编译时包含调试信息,源代码文件存在且路径正确,GDB的当前工作目录与源代码文件所在目录一致,源代码文件未被删除或修改,并且使用兼容的GDB版本。如果问题仍然存在,可以尝试查阅GDB的官方文档或寻求相关技术支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

学习GDB

删除指定的断点,如果指定断点号,则表示删除所有的断点。range 表示断点号的范围(如:3-7)。其简写命令为d。           ...=47      在你改变程序变量取值,最好都使用set var格式的GDB命令。...12 显示源代码      GDB 可以打印出所调试程序的源代码,当然,在程序编译一定要加上 –g 的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。...当程序停下来以后,      GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的源代码。默认打印10行,还是来看一看查看源代码GDB命令吧。      ...一般是打印当前行的上5行和下5行,如果显示函数是是上2行下8行,默认是10行,当然,你也可以定制显示的范围,使用下面命令可以设置一次显示源程序的行数。

1.4K80

GDB使用详解

*注意-g,在linux下用gcc编译,如果不加-g,编译器会进行优化,就不会生成调试信息,无法调试,也可以使用-ggdb,这是gcc为gdb提供的更详细的调试信息,别的调试器无法使用。...二、常见命令 l(list):显示代码,list 行号:将显示当前文件以“行号”为中心的前后10行代码,如:list 12,list 函数名:将显示“函数名”所在函数的源代码,如:list main...:help 命令显示命令”的常用帮助信息; call 函数(参数):调用“函数”,并传递“参数”,如:call gdb_test(55); layout:用于分割窗口,可以一边查看代码,一边测试;...layout src:显示源代码窗口; layout asm:显示反汇编窗口; layout regs:显示源代码/反汇编和CPU寄存器窗口; layout split:显示源代码和反汇编窗口; display...执行下一步操作,注意命令行此时显示的并不是当前执行的操作,而是下一次要执行的。

6.4K100

GDB的那些奇淫技巧

程序运行 我经常用到的一个功能是需要使用 gdb 执行某个程序,并且能精确控制程序的参数,包括命令行、标准输入和环境变量等。gdb 的 run 命令就是用来执行程序的。...我一般使用的方式是在调用 gdb 指定,比如: $ env CONTENT_TYPE="$(python -c "print 'A'*10 + '\x04\x03\x02\x01'")" gdb demo...打印帧内的相关变量 info args 打印函数的参数 代码浏览 命令 含义 备注 list 101 显示第 101 行周围 10行代码 list 1,10 显示 1 到 10 行代码 list...main 显示函数周围代码 list basic.c:main 显示另外一个源代码文件的函数周围代码 list - 重复之前 10 行代码 list *0x22e4 显示特定地址的代码 cd...dir 复位源代码搜索路径(清空) show directories 显示源代码路径 浏览数据 命令 含义 备注 print {expression} 打印表达式,并且增加到打印历史 print

1.1K20

linux下gdb调试方法与技巧整理「建议收藏」

目录 一、gdb简介 二、gdb使用流程 1、启动gdb 2、查看源码 3、运行程序 4、设置断点 5、单步执行 6、查看变量 7、退出gdb 三、gdb基本使用命令 1、运行命令 2、设置断点...delete breakpoints:清除所有断点: 3、查看源码 list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。...list 行号:将显示当前文件以“行号”为中心的前后10行代码,如:list 12 list 函数名:将显示“函数名”所在函数的源代码,如:list main list :不带参数,将接着上一次 list...6、分割窗口 layout:用于分割窗口,可以一边查看代码,一边测试: layout src:显示源代码窗口 layout asm:显示反汇编窗口 layout regs:显示源代码/反汇编和CPU...寄存器窗口 layout split:显示源代码和反汇编窗口 Ctrl + L:刷新窗口 7、cgdb强大工具 cgdb主要功能是在调试进行代码的同步显示,这无疑增加了调试的方便性,提高了调试效率

2.1K20

Linux下gdb的安装及使用入门

-g选项的作用是:在可执行文件中加入源码信息,比如:可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件都嵌入到可执行文件中,而是在调试必须保证gdb能找到源文件。...当程序执行完,可以输入quit命令来退出gdb模式。   ...[9] gdb基本命令   gdb有许多有用的命令list显示源代码),这样就可以结合源码与调试信息更好的进行调试。...(i)  locals 查看当前栈帧局部变量的值 list(l) 列出源代码,接着上次的位置往下列,每次列十行 list  行号 列出第几行开始的源代码 list  函数名 列出某个函数的源代码 next...info  registers 可以显示所有寄存器的当前值。在gdb中表示寄存器名前面要加个$,例如p $esp可以打印esp寄存器的值。

6.2K10

GDB调试

clear :和break命令对应的反操作,根据位置清除断点,指定参数则清除所有断点。...在查看栈信息的同时,你可能会对源代码感兴趣,以帮助你更好的理解程序的来龙去脉(如果你用的是Emacs编辑器,这种需求就会大大减少,因为Emacs和GDB配合的非常好),GDB提供了相应的命令显示和查找源代码...显示源码: list [list_args]:list(l)显示源代码list_args类似break中的break_args参数,可以是行号,函数等,详细参考help list。...显示源代码虚拟地址: info line [line_args]:显示源码虚拟地址,line_args和前面的list_args类似,详细参考help info line。...栈溢出:当在栈上分配很大的数组很容易导致栈溢出,对于较大内存的使用最好是通过动态内存分配来获取。 地址保护:在mmap做内存映射,如果尝试往只读的映射区写入数据会导致段错误。

2.1K10

Linux下GDB调试指令总结

代码调试器:避免不了,程序会出现bug,但是使用命令行编译出错后是没有调试信息的(g++编译),因此我们需要使用gdb对程序进行调试。 ?...step (简写s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的 until(简写u):当你厌倦了在一个循环体内单步跟踪,这个命令可以运行程序直到退出循环体。...delete breakpoints:清除所有断点: 03 查看源代码list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。...list 行号:将显示当前文件以“行号”为中心的前后10行代码,如:list 12 list 函数名:将显示“函数名”所在函数的源代码,如:list main list :不带参数,将接着上一次 list...gdb_test() 函数 print gdb_test(a):将以变量 a 作为参数调用 gdb_test() 函数 display 表达式:在单步运行时将非常有用,使用display命令设置一个表达式后

4.5K20

GDB调试技巧】提高gdb的调试效率

gdb的启动 准备内容 一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译,必须要把调试信息加到可执行文件中。...使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。...GDB启动,可以加上一些GDB的启动开关,详细的开关可以用gdb的help查看。 gdb技巧 1. gdb小技巧汇总 gdb技巧挺多的,比如说直接回车是继续执行上一次的代码 巧用tab补全 1....list 查看代码内容 list list 与 l 等价 如果没有指定参数,list 命令默认会显示当前执行位置的附近源代码。也可以指定行号或者函数名作为参数,以显示特定位置的源代码。...list: 显示当前执行位置周围的源代码list function_name: 显示名为 function_name 的函数的源代码list line_number: 显示指定行号的源代码

11910

调试HotSpot源代码(配视频)

1、GDB调试源代码 在Linux上常用GDB调试C/C++源代码使用GDB运行如上实例生成的Class文件,具体命令如下: gdb --args ....第一条命令表示在源文件java.c的JavaMain函数入口处设置断点;第二条命令表示让中断的程序继续运行,直到运行完程序后退出GDB,并在终端打印”Hello World!...下面介绍一些常用的GDB命令,如下表所示。...查看当前栈帧局部变量的值 list(l) 列出源代码,接着上次的位置往下列,每次列10行ll list(l) 行号 列出从指定行开始的源代码 list(l) 函数名 列出指定的函数的源代码 next(...设置观察点 info(i) watchpoints 查看当前设置了哪些观察点 x 从某个位置开始打印存储单元的内容,全部当成字节来看, 而区分哪个字节属于哪个变量 2、在Eclipse中调试源代码

1.3K40

gdb基本用法

单步调试和跟踪函数调用 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(...或i) locals 查看当前栈帧局部变量的值 list(或l) 列出源代码,接着上次的位置往下列,每次列10行 list 行号 列出从第几行开始的源代码 list 函数名 列出某个函数的源代码 next...(或n) 执行下一行语句 print(或p) 打印表达式的值,通过表达式可以修改变量的值或者调用函数 quit(或q) 退出gdb调试环境 set var 修改变量的值 start 开始执行程序,停在main...取消跟踪显示 观察点 命令 描述 watch 设置观察点 info(或i) watchpoints 查看当前设置了哪些观察点 x 从某个位置开始打印存储单元的内容,全部当成字节来看,而区分哪个字节属于哪个变量...资料 gdb使用

68620

Linux下的GDB调试器常用指令

概述 GDB(GNU Debugger) 是一个用来调试 C/C++ 程序的功能的调试器,是Linux系统开发C/C++最常用的调试器 程序员可以使用GDB来跟踪程序中的错误,从而减少程序员的工作量 Linux...常用调试命令参数 调试开始:执行gdb [exefilename],进入gdb调试程序,其中exfilename为要调试的执行文件名,以下命令后括号内为命令的简化使用,比如 run(r),直接输入命令...r 就代表命令 run help(h) #查看命令帮助,具体命令查询在gdb 中输入help + 命令 run(r) #重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件)...start(s) #单步执行,运行程序,停在第一行执行语句 list(l) #查看源代码list-n从第n行开始查看代码。...run argv[1] argv[2] #调试命令传参 set follow-fork-mode child #Makefile项目管理,选择跟踪父子进程(fork) 编译源代码需要加上 -g ,产生的可执行文件才能用

1.7K20

gdb调式程序

3)程序暂停的值的监视。 4)动态改变程序的执行环境。 2. 基本操作命令: 这里只介绍常用命令的简单用法,如需读者想更加深入的了解,还请读者参照gdb手册。...基本命令列表: 命令 解释 简写 file 装入想要调试的可执行文件 无 list 列出产生执行文件源代码的一部分 l next 执行一行源代码但不进入函数内部 n step 执行一行源代码而且进入函数内部.../test 显示如下结果: hello 1 hello 2 hello 3 hello 4 hello 5 4 gdb调试程序 如果需要使用gdb调试 在编译test.c的时候,并把调试选项打开...Reading symbols from /opt/c++/test...done. 3)list命令 也可以过回车查看源代码 (gdb) list 1 #include 2 #include...) 一次只列10行,如果要从11行开始继续列源代码可以输入 (gdb) list 也可以什么都不输直接敲回车,gdb提供了一个很方便的功能,在提示符下直接敲回车表示用适当的参数重复上一条命令

48820

掌握GDB调试工具,轻松排除bug

查看源代码 list(l):查看最近十行源码 list fun:查看fun函数源代码 list file:fun:查看flie文件中的fun函数源代码 设置断点与观察断点 break 行号/fun设置断点...list(l): 列出源代码 quit(q): 退出 gdb 调试模式 进入 gdb 之后,输入 help 可以查看所有命令使用说明 2.1查看源码 list [函数名][行数] 2.2打断点调试 (...print 当被调试的程序收到信号GDB显示出一条信息。 noprint 当被调试的程序收到信号GDB不会告诉你收到信号的信息。...pass or noignore 当被调试的程序收到信号GDB处理信号。这表示,GDB会把这个信号交给被调试程序会处理。...基本gdb命令GDB常用命令 格式 含义 简写 list List [开始,结束] 列出文件的代码清单 l prit Print 变量名 打印变量内容 p break Break [行号或函数名]

61400

【Linux】开始使用gdb吧!

2 开始使用 首先进入gdb直接使用gdb 文件名 接下来我直接给出 gdb 的 所有功能命令(注意简写形式,会经常使用): list /l 行号:显示指定行号附近的源代码,每次显示10行,从当前光标位置向下滚动...list /l 函数名:显示指定函数的完整源代码。 r 或 run:开始执行程序。 n 或 next:执行下一条语句,不会进入函数内部。...监视相关操作: display 变量名:跟踪指定变量的值,并在每次程序暂停显示它。 undisplay:取消对先前设置的变量的跟踪。...出乎意料的是 再使用list出现了报错(No symbol table is loaded....这是因为 gdb操作的应该是编译后的文件 当编译,未加 - g 选项,则进入gdb环境中执行命令会出现No symbol table is loaded.

19210

GDB 调试笔记

gdb命令一般可以使用 gdb program 或者使用 gdb progrma core 。如果想对正在执行的进程进行调试,则可以使用 gdb -p 123 。...这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译使用“-g”参数)。 (gdb) s(gdb) n si, ni si命令类似于s命令,ni命令类似于n命令。...所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。 (gdb) si(gdb) ni p Print的简写,显示指定变量(临时变量或全局变量)的值。...如果指定了“命令名称”参数,则显示命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。...补充小工具 python dbg工具,可以通过 apt-get install -y python-dbg 进行安装,然后可以在其中使用 py-bt 、 py-list命令

89930

GDB调试程序(二)

http://blog.csdn.net/haoel/article/details/2880 GDB命令概貌 ——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb命令开始调试程序了...如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。 在gdb中,运行程序使用r或是run命令。程序的运行,你有可能需要设置下面四方面的事。...cd 相当于shell的cd命令。     pwd 显示当前的所在目录。 4、程序的输入输出。     info terminal 显示你程序用到的终端的模式。    ...2、先用gdb 关联上源代码,并进行gdb,在gdb中用attach命令来挂接进程的PID。并用detach来取消挂接的进程。...当进程被gdb停住,你可以使用info program 来查看程序的是否在运行,进程号,被暂停的原因。

98620

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券