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

如何正确使用gdb ` `set -path`,并在其开头加上../ reference?

使用gdb命令的set -path可以设置源代码的搜索路径,使gdb能够正确找到源代码文件。在命令开头加上../ reference则可以指定一个参考目录,该目录下的源代码文件也会被搜索。

具体使用步骤如下:

  1. 打开终端或命令行窗口,并进入你的项目目录。
  2. 启动gdb调试器,命令为:gdb <可执行文件路径>,其中<可执行文件路径>是你要调试的程序的路径。
  3. 在gdb的命令行中输入set -path <源代码搜索路径>,将源代码的搜索路径设置为你的项目中的路径。可以使用绝对路径或相对路径,建议使用相对路径以便于项目的移植性和维护性。
  4. 如果你希望gdb也搜索参考目录下的源代码文件,可以在命令开头加上../ reference,示例命令为:set -path ../reference <源代码搜索路径>
  5. 输入其他gdb命令开始调试你的程序。

注意事项:

  • 确保指定的源代码搜索路径和参考目录存在,并且包含所需的源代码文件。
  • 如果你的项目涉及多个源代码文件,建议将它们组织在一个文件夹中,方便使用相对路径进行设置。
  • 如果你的项目是使用多个语言编写的,可以通过多次使用set -path命令来指定不同语言的源代码路径。
  • 对于复杂的项目,你可能需要在不同的调试会话中设置不同的源代码搜索路径。

腾讯云相关产品推荐:

  • 云服务器(CVM):腾讯云提供的弹性计算服务,适用于各种应用场景,包括Web应用、大数据分析、游戏服务等。详情请访问:云服务器产品介绍
  • 云函数(SCF):腾讯云的无服务器计算产品,可帮助开发者更轻松地编写和部署应用程序。详情请访问:云函数产品介绍
  • 云开发(TCB):腾讯云提供的一站式后端云服务,支持快速开发小程序、网站和移动应用。详情请访问:云开发产品介绍
  • 云数据库MySQL(CMYSQL):腾讯云的云数据库产品,提供高性能、可扩展的MySQL数据库服务。详情请访问:云数据库MySQL产品介绍
  • 人工智能平台(AI Lab):腾讯云提供的人工智能开发平台,包括人脸识别、语音识别、图像识别等功能。详情请访问:人工智能平台产品介绍

以上推荐的腾讯云产品仅供参考,你可以根据实际需求选择适合的产品和服务。

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

相关·内容

PHP 源码阅读

/:/var/www ports: - 9999:9999 构建容器启动 docker-compose up -d && docker-compose exec centos bash...使用GDB调试 docker-compose exec centos bash // tui 模式运行 也可先调试, 然后 CTRL+X+A gdb --tui // 调试可执行文件 gdb php...// 调试进程号 gdb --pid=xxx 常用命令 说明 run 重新开始运行文件 start 单步执行,运行程序,停在第一执行语句 list 查看原代码,简写 l set 设置变量的值 next...,就会去获取zval.value.ref,是一个zend_reference类型(_zend_reference的别名) 而实际上_zend_reference结构体里有一个成员val是zval类型,...typedef说明 如果要在其他文件使用, 会在头文件最开始定义 如果只在当前文件使用, 那么会在结构体声明的时候直接紧随 部分结构体(如zend_string)中字符串为什么不是char *,而是

21910
  • GDB调试指南-源码查看

    文本将会介绍如何GDB调试模式下查看源码或对源码进行编辑。...) 指定源码路径 在查看源码之前,首先要确保我们的程序能够关联到源码,一般来说,我们在自己的机器上加上-g参数编译完之后,使用gdb都能查看到源码,但是如果出现下面的情况呢?...当然你还可以使用前面的方法添加源码搜索路径,也可以使用set substitute-path from to将原来的路径替换为新的路径,那么我们如何知道原来的源码路径是什么呢?.../sourceCode [ 40] main.c (显示部分内容) main为你将要调试的程序名,这里我们可以看到原来的路径,那么我们现在替换掉它: (gdb) set substitute-path...(gdb) 设置完成后,可以通过show substitute-path来查看设置结果。这样它也能在正确的路径查找源码啦。

    2.2K40

    GDB调试还不会?看这篇就够了!

    源码查看 在Linux使用C/C++进行开发,不了解gdb的基本使用,是有点说不过去的,网上也有官方的GDB教程,或者其他教程,本文是借助实例,介绍了如何使用GDB进行调试。...或者使用set args,然后在用run启动: gdb hello (gdb) set args 编程珠玑 (gdb) run Starting program: /home/hyb/workspaces...,如果要打印多个值,后面跟上@加上要打印的长度。...当然你还可以使用前面的方法添加源码搜索路径,也可以使用set substitute-path from to将原来的路径替换为新的路径,那么我们如何知道原来的源码路径是什么呢?...(gdb) 设置完成后,可以通过show substitute-path来查看设置结果。这样它也能在正确的路径查找源码啦。

    4.7K21

    GDB调试程序(二)

    make_command                 make_symbol_completion_list     (gdb) b make_     GDB把所有make开头的函数全部例出来给你查看...在GDB中运行程序 ———————— 当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件。...如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。 在gdb中,运行程序使用r或是run命令。程序的运行,你有可能需要设置下面四方面的事。...set args 可指定运行时参数。(如:set args 10 20 30 40 50)     show args 命令可以查看设置好的运行参数。 2、运行环境。    ...path 可设定程序的运行路径。     show paths 查看程序的运行路径。     set environment varname [=value] 设置环境变量。

    1K20

    Linux gdb使用基础

    /gdbtest result=55 程序在本电脑上运行正确,但是,该程序是存在问题的,add()函数中的sum变量应该赋初值0,否则在其它电脑上运行,如果该变量被初始化了随机数,则会计算出错误的结果。...(gdb) 首先输出一些系统信息,最后一行开头的(gdb)为命令提示符,输入start命令开始调试: (gdb) start Temporary breakpoint 1 at 0x67b: file...如果局部变量默认不是初始化为0,可以在GDB环境下通过set var命令修改变量的值,查看运行效果。...由于程序在本电脑上运行无误,我们现在故意修改sum的初始值为100,查看最终的运行结果: (gdb) set var sum=100 No symbol "sum" in current context...) 使用set var sum=100将sum的值修改为100,注意要切换到sum变量所在的帧栈环境中执行,然后可以使用print或info locals命令查看修改后的结果,接着使用finish命令使程序自动运行结果

    2.4K10

    MySQL客户端的进阶操作

    * GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编注明来源。 引言 作为一个MySQL数据库从业者,我们最常用的工具就是mysql了,然而如何让它变的更好用,你了解吗?...有这个命令后,输出错误的SQL,就不需要再用\c终止了,而是直接在其加上\e进行编辑,修改成正确的后,再执行。...--login-path的方式进行登录,我这里使用的是gdb1登录。...echo "alias mlogin='mysql --login-path=gdb1 --tee /greatdb/logs/client/\$(date +%Y-%m-%d_%H-%M-%S).log...使用体验 mysql Client Commands在某些场景下,可以极大的提高我们的操作效率,相对于完整的命令ego、pager、edit等,我更喜欢使用他们的简写命令\G、\P、\e,因为有时候完整命令不确定如何正确使用

    2.4K40

    【Linux】Linux调试器-gdb使用

    背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上-g选项...初次使用时,需要先安装: sudo yum install -y gdb 使用 注意使用gdb时,调试的是debug模式。...s或step:进入函数调用 break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点 info break :查看断点信息。...set var:修改变量的值 continue(或c):从当前位置开始连续而非单步执行程序 run(或r):从开始连续而非单步执行程序 delete breakpoints:删除所有断点 delete...在调试过程中是可以修改变量的值的,用set var 修改变量。通常用来判断循环条件,这样做可能会导致最终的值不正确

    19900

    九、自定义工具箱【ArcGIS Python系列】

    本文将介绍如何把Python脚本编写出脚本工具的过程,脚本工具可以集成到工作流中,使用软件的工具对话框作为独立工具运行,也可以在模型中使用。开发脚本工具相对容易,也方便其他用户的使用。...您可以输入一些基本信息保存,稍后再返回编辑工具属性。 首先,我们要在脚本中传入参数,主要有两种方式: arcpy.GetParameterAsText将传入的参数作为字符串传入。...import os import arcpy # Allow overwriting of output arcpy.env.overwriteOutput = True # Set current workspace...fcs = arcpy.ListFeatureClasses() # Find the total count of shapefiles in list fc_count = len(fcs) # Set...# Trim the '.shp' extension fc = os.path.splitext(shp)[0] # Update the progressor label for current

    37910

    教你写出健壮可靠的shell脚本!

    脚本失败时即退出 可以在脚本的开头设置如下: set -e 举个例子: #!.../bin/bash set -e lp || true date 不过个人觉得这样的设置用处不是特别大,因为很多时候就是需要处理不同的错误情况,而这样只能要么遇到错误退出,要么认为正确,导致无法走到异常分支...: sh -x test.sh 或者,和上面类似,在开头加上set -x: //来源:公众号【编程珠玑】 //作者:守望先生 #!...,如果我们想早点发现这类问题,避免在复杂的脚本中问题被掩盖,那么可以在开头加上set -u 再次运行就会提示: test.sh: 5: test.sh: num: parameter not set...对于静态变量使用readonly 通常我们会在脚本开头定义一些静态变量: MY_PATH=/usr/bin 而为了避免MY_PATH被意外修改,可以这样: readonly MY_PATH=/usr/

    2.6K10

    linux core文件机制

    在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。...gdb ./a.out  core-file core.xxxx  使用bt命令即可看到程序出错的地方。 以下两种命令方式具有相同的效果,但是在有些环境下不生效,所以推荐使用上面的命令。...在 PC上调试开发板上产生的core文件,需要使用交叉编译器自带的gdb,并且需要在gdb中指定solib-absolute-prefix和 solib-search-path两个变量以保证gdb能够找到可执行程序的依赖库路径...配置文件内容: set solib-absolute-prefix YOUR_CROSS_COMPILE_PATH set solib-search-path YOUR_CROSS_COMPILE_PATH...set solib-search-path YOUR_DEVELOPER_TOOLS_LIB_PATH handle SIG32 nostop noprint pass 注意:待调试的可执行文件,

    4.9K42

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

    使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。...gdb program 1234 如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,调试他。program应该在PATH环境变量中搜索得到。...GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb的help查看。 gdb技巧 1. gdb小技巧汇总 gdb技巧挺多的,比如说直接回车是继续执行上一次的代码 巧用tab补全 1....比如输入b连续按下两次tab,可以查看gdb的所有b开头gdb指令 2....比如设置断点记不清函数名称,举个简单示例:希望b main 但由于记不清main的函数全称,在b ma之后连续按下两次tab,可以查看ma开头的所有函数名称。

    18210

    GDB实现原理和使用范例

    一、前言 这篇文章为了让你深入了解gdb的工作原理,以及如何在linux环境下使用强大的gdb调试程序功能。 二、gdb工作原理 2.1....编译时候加上-g生成(除了-g,还可以显示指定格式-gdwarf、-gstabs、-gxconff,但是-g可移植性更强,-ggdb可以生成针对gdb特定的格式。...如何实现跟踪程序 一个elf程序中有symbol table,symbol是一段程序或者变量的符号链接,使用#nm -g openssl可以查看。...查看当前程序的进程空间地址分布 set env LD_LIBRARY_PATH /data/mariolu/tls13/openssl-OpenSSL_1_1_1/设置当前的运行环境 gdb -tui...-p :可视化界面调试 set指令:某些指针是void类型,但是知道是某种数据接口,就可以set $a=(SSL*)0x143a308,在这里定义一个临时变量$a,$a使用描述的地址指针并且解析成

    5.2K10

    GDB调试-从入门实践到原理

    本来这篇文章也想写写Windows下调试相关,奈何好多年没用了,再加上工作太忙,所以本文就只写了Linux下GDB调试相关,对于Windows开发人员,实在对不住了。...为了支持多进程调试,从GDB版本7.0开始支持单独调试(调试父进程或者子进程)和同时调试多个进程。 那么,我们该如何调试子进程呢?我们可以使用如下几种方式进行子进程调试。...循环,无论如何是不会执行到下面printf函数。...可同时向子进程交付指定的信号 调试原理 运行调试新进程 运行调试新进程,步骤如下: 运行gdb exe 输入run命令,gdb执行以下操作: 通过fork()系统调用创建一个新进程 在新创建的子进程中执行.../to/liba.so,那么可以有下面两种方式: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/ 这样在通过ldd查看,就能找到对应的lib库,但是这个缺点是临时的

    2.9K30
    领券