GDB:在头文件中的模板类函数中设置断点时出错

2023-12-23

我使用了两个不同版本的 GDB,都在以下代码中出现问题:

删减代码MyFile.h:

template<class T>
struct ABC: PQR<T> {
  void flow(PP pp) {
    const QX qx = XYZ<Z>::foo(pp); // Trying to set a breakpoint here, line no. 2533
    ASSERTp(qx >= last_qx());
   }
}

GDB 7.1:

Reading symbols from /path_to_exec/exec...done.
(gdb) break MyFile.h:2533
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x156.
Note: breakpoint 1 also set at pc 0x156.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x121.
Note: breakpoint 1 also set at pc 0x156.
Note: breakpoint 1 also set at pc 0x156.
Note: breakpoint 1 also set at pc 0x121.
Breakpoint 1 at 0x44e5c4: file PacketEngine.h, line 2533. (23 locations)
(gdb) run
Starting program: /path_to_exec/exec -options
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0x121: Input/output error.
Cannot insert breakpoint 1.
Error accessing memory address 0x156: Input/output error.

为什么要为一个设置23个断点?再往下,它给出了错误run

GDB 6.3:

 This GDB was configured as "x86_64-redhat-linux-gnu"...Using host libthread_db library "/lib64/tls/libthread_db.so.1".

(gdb) break MyFile.h:2533
No line 2533 in file "MyFile.h".

在程序开始时,它甚至不接受断点如果我中断函数 ASSERTp,它就会中断。然后。如果我转到“UP”并输入break,它会成功插入断点(break MyFile.h:2533)。 [因此它在程序实际运行后以某种方式找到文件/行]。However,尽管设置了断点,但重新运行程序时,它不会在第 2533 行停止,而仅在第 2534 行停止(函数 ASSERTp 中的断点)。

我的问题:

1)有人可以帮我解决这个问题吗?

2) 我经常遇到模板代码和GDB 的问题。有没有好的、免费的 C++ 模板调试器?

3) 并不是很重要,但如果重要的话还有一个附带问题:哪个版本更好? 7.1 似乎有更多错误,但我记得在某些运行中,它出现的问题较少。


系统信息:

uname -a
Linux ... 2.6.9-67.ELsmp #1 SMP Fri Nov 16 12:49:06 EST 2007 x86_64 x86_64 x86_64 GNU/Linux

file /usr/bin/gdb   #### GDB 6.3
/usr/bin/gdb: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), stripped

file ~/local/bin/gdb  #### GDB 7.1
/home/user/local/bin/gdb: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), not stripped

file /path_to_exec/exec
/path_to_exec/exec: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), not stripped

我没有使用任何其他 Linux 调试器,但我从未遇到过您所解释的此类问题。

您很好地阐述了您的问题(所以您可能做到了),但是您是否使用调试符号编译了源代码?

EDIT

顺便说一句,我还没有尝试过 gdb 7.1 - 只有 6.8 版本。如果你认为它有很多 bug,请尝试使用 6 版本的最后一个版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GDB:在头文件中的模板类函数中设置断点时出错 的相关文章

  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我

随机推荐

  • Hive 中的 Presto UNNEST 函数相当于什么

    急板有一个UNNEST函数分解由数组组成的列 Hive 有类似的吗 请参阅文档UNNEST急速功能here https prestodb io docs current sql select html Use lateral view ou
  • 使用 DTO 时,Automapper 和 Nhibernate 反映正在更新的域对象中 DTO 子集合的更改

    我对这个设计不是很熟悉 但我希望得到一些指导 我有一个后端服务 它将 DTO 发送到 WPF 智能客户端 在 WPF 智能客户端上 用户将更改 删除和修改项目 然后将更改发送回 客户端 gt 服务器 举个例子 目前我正在处理客户详细信息表单
  • 无法让 dokka 在 gradle/android 项目上生成 kotlin 文档

    我正在关注 gradle 插件部分https github com Kotlin dokka https github com Kotlin dokka 我还尝试了 dokka gradle example 中的示例https github
  • Spring结果集提取器

    如何使用ResultSetExtractor从数据库检索数据 这里我使用oracle 10g作为后端 如果从员工表中搜索员工详细信息 哪个更好ResultSetExtractor or RowMapper 从 java 8 开始 还可以使用
  • 无继承的 OOP 重用:这在“现实世界”中有多实用?

    本文描述了一种我觉得很有趣的 OOP 方法 如果对象存在为 封装和通信 通过消息 如果代码重用了怎么办 与继承无关 但是 使用组合 委托 甚至 老式的辅助对象或任何 程序员认为合适的技术 本体并没有消失 但它 与实现分离 最令我震惊的是无需
  • 如何使用 Spring 的 JDBCTemplate 有效执行 IN() SQL 查询?

    我想知道是否有一种更优雅的方法来使用 Spring 的 JDBCTemplate 进行 IN 查询 目前我正在做类似的事情 StringBuilder jobTypeInClauseBuilder new StringBuilder for
  • JavaFX 没有 TouchEvents

    在我的 Windows Surface Go 2 平板电脑上 我无法检索任何 多点触控 触摸事件 我尝试了几个 Java FX 版本 即使使用 JavaFX 17 及更早版本 也不会生成 TouchEvents 事件 仅生成鼠标事件 是否需
  • 每10秒自我更新一次的小部件Handler.postDelayed问题

    我正在尝试使工作成为 Android 小部件中的自我更新功能 就像每 10 秒更改它的两个 TextView 一样简单 理想的解决方案是使其类似于精灵小部件 新闻和天气 到目前为止 它工作正常 它通过 Handler postDelayed
  • Pycharm 设置 Mysql 数据库驱动程序

    我正在尝试在 pycharm 中设置 mysql 数据库连接 我已经创建了架构并且它可以在 django 等中工作 我试图将数据源直接导入到 pycharm 但出现以下错误 Connection to Exception in thread
  • 为什么 smartcast 不能处理这种情况?

    我有一些与此结构类似的代码 private fun test Double val a Double 15 0 val b Double 20 0 return if a null b null 0 else if a null b nul
  • 我的主函数反汇编中所有这些奇怪的汇编指令是什么?

    所以我有这个主要功能 它会产生很多奇怪的指令 我使用的是 Visual Studio 2019 并且处于调试模式 因此禁用了优化 这些指令是做什么的 int main 00D340E0 push ebp 00D340E1 mov ebp e
  • 使用自定义 Comparer 的 OrderBy 的 Linq 语法

    对于带有自定义排序比较器的任何给定 Linq 表达式 有两种格式 Format 1 var query source Select x gt new x someProperty x otherProperty OrderBy x gt x
  • jQuery fadeIn '慢' 立即出现

    我试图做到这一点 以便当您单击链接时 它会删除一个 div 带有一些段落和文本 并插入另一个 div 带有一些段落和一些文本 我正在使用 jQuery 来淡入和淡出它们 当您单击链接时 原始 div 会淡出 然后我有一个 switch ca
  • 如何从 GooglePicker 上选定的文件中获取 blob

    我正在使用 GooglePicker 和 React 我得到的结果是一个对象数组 id 1 m serviceId docs mimeType image jpeg name name jpg description type photo
  • 带有纹理背景的 CSS 之字形边框

    我一直在研究带有锯齿形边框的标题 一种方法是使用图像来制作之字形效果 1 有没有办法在CSS中创建一个实用的跨浏览器之字形边框而不使用图像 我还尝试在该标题上放置一个延伸到之字形的纹理背景 但是 标题的垂直尺寸可能会改变 并且我无法将标题实
  • 单击按钮时滚动视图向上和向下滚动[重复]

    这个问题在这里已经有答案了 可能的重复 以编程方式滚动 UIScrollView https stackoverflow com questions 2234875 programmatically scroll a uiscrollvie
  • Mac Swampy(Python学习模块)安装

    我想教我的孩子们编程 并且正在使用 Downey 的 Think Python 这本书很棒 除了他安装 Swampy 一个类似海龟的学习模块时 我花了几个小时试图弄清楚 现在我需要帮助 任何人都可以提供有关如何安装 Swampy 的清晰 分
  • asp.net mvc 并检查用户是否登录

    我是 ASP NET MVC 新手 我需要检查用户是否在我的应用程序中登录 因此我将以下代码放在我的 global asax 中 void Application PreRequestHandlerExecute object sender
  • 无效写入——Valgrind

    您好 我在我的 c 程序中遇到了 munmap chunk invalid point 错误 主要问题是 我什至不确定指针可能变得无效的所有方式是什么 我已经检查了我的代码中是否有没有足够空间调用的字符串 但没有发现任何看起来会超出范围的情
  • GDB:在头文件中的模板类函数中设置断点时出错

    我使用了两个不同版本的 GDB 都在以下代码中出现问题 删减代码MyFile h template