如何使用 Valgrind 检测分段错误细节?

2024-02-27

我有一个 std::map ,它通过一些 API 调用进行初始化。当我尝试使用此地图时,出现分段错误。如何检测无效代码或无效内容或任何可以帮助我解决问题的细节?代码如下所示:

std::map< std::string, std::string> cont;

some_func( cont ); // getting parameter by reference and initialize it, someone corrupted memory (cont) inside this function

std::cout << cont[ "some_key" ] << '\n'; // segmentation fault here, cannot access "some_key"

您使用以下语法启动应用程序(在调试模式下编译):

valgrind yourapp

Valgrind 将向您显示发生分段错误的堆栈回溯。之后,您就需要找出发生的情况并进行纠正。

在你的代码中,无论 valgrind 如何,我都会检查返回的内容cont[ "some_key" ]段错误最可能的原因是返回的值是一些野指针或根本没有初始化。如果是这样,请尝试访问它cont["some_key"][0]也会导致分段错误。

另一个想法:地图中的字符串键怎么样?是否有可能其中一些默默地(也不例外)未能分配用作密钥的字符串的数据部分。 std::map 不是哈希表,而只是一些有序的容器。当搜索一个密钥时,它可能需要访问其他密钥,并且那里可能会发生糟糕的事情。要检查您是否可以尝试迭代地图中的所有键并显示内容(以查看“some_key”是否特别出现问题,或者您是否无法访问地图中的任何内容)。

如果您的程序不需要排序来查看行为是否相同,您也可以尝试使用 unordered_map。

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

如何使用 Valgrind 检测分段错误细节? 的相关文章

随机推荐

  • 如何在javascript中为隐藏变量分配空值?

    我有一个名为 str 的隐藏输入变量 我正在为其分配 abc 值 然后我尝试分配空值 或者说对它的空引用 但我不能 Edit 代码的一部分 隐藏领域
  • 为什么哈希的字符串键被冻结?

    根据规格 http www ruby doc org core 1 9 3 Hash html method i store 用作哈希键的字符串被复制并冻结 其他可变对象似乎没有这样特殊的考虑 例如 使用数组键 可以进行以下操作 a 0 h
  • 开玩笑,在 GitLab 上找不到命令

    我想在 GITLAB 上使用 JEST 执行单元测试 但它似乎不起作用 它可以在我的本地计算机上运行 但不能在 GitLab 上运行 整个代码为 gitlab ci yml image node 16 cache paths node mo
  • exec sp_updatestats 的作用是什么?

    有什么用sp updatestats 我可以在生产环境中运行它以提高性能吗 sp updatestats更新数据库中所有表的所有统计信息 甚至单行已更改 它使用默认示例来执行此操作 这意味着它不会扫描表中的所有行 因此它可能会生成不如替代方
  • 如何从两个制表符分隔的文件中获取枢轴线?

    给定两个文件file1 txt abc def t 123 456 jkl mno t 987 654 foo bar t 789 123 bar bar t 432 and file2 txt foo bar t hello world
  • 更新具有空值的多行

    我有一个包含 id 和 name 两列的表 Id 包含空值 name 包含一些名称值 表中存在重复的行 要求是将空值 id 更新为与名称值匹配的某个值 查找下表 Id Name 1 abc 1 abc 1 abc 1 abc NULL ab
  • 将表重新添加到实体模型 (edmx) 时不显示

    我有一个有 5 个表的数据库 一开始 我添加了这些表 但后来由于某些关系编译错误而决定删除一些表 现在 当我想将它们添加回来时 我打开 edmx 文件 gt 从数据库更新模型 我在 添加 选项卡下看不到这些表 而只在 刷新 选项卡下看到 我
  • Tensorflow:张量到 numpy 数组的转换,无需运行任何会话

    我在张量流中创建了一个OP 对于某些处理 我需要将数据从张量对象转换为numpy数组 我知道我们可以使用tf eval or sess run评估任何张量对象 我真正想知道的是 有没有办法在不运行任何会话的情况下将张量转换为数组 因此我们又
  • 映射类型:删除私有接口

    在 TypeScript 中 私有属性被视为类型的形状 或接口 的一部分 class Person constructor private name string public age number const p Person age 4
  • Android Studio:在当前行显示错误的键盘快捷键?

    我发现显示带下划线的代码段错误的唯一方法是将鼠标悬停在其上 实现此目的的键盘快捷键是什么 当光标位于错误行时 在 Mac 上是 Command F1 在菜单栏中是 查看 gt 错误描述 我认为这就是 Windows 上的 Control F
  • APNS 从多个服务器发送通知

    我正在编写一个 iOS 应用程序 它将通过 APNS 从后端服务器发送通知 我可以配置多个服务器来连接到 APNS 并发送通知吗 如果是这样 可以为单个应用程序发送通知的服务器数量是否有限制 我在 Apple 网站上找不到有关此内容的任何详
  • Spring框架,启用PUT方法

    我在捕获发送到服务器的 PUT 请求时遇到问题 这些是我的方法 RequestMapping method RequestMethod GET public String getCity PathVariable value cid Str
  • Webpack 开发服务器不自动重新加载

    所以我设置了 webpack 并webpack dev server but webpack dev server不自动重新加载 如果我修改文件并保存它 则浏览器中不会发生任何更改 直到我手动刷新 这是我的 webpack 配置和运行的脚本
  • 如何为 nltk 词形还原器提供(或生成)标签

    我有一组文档 我想将它们转换为这样的形式 这样我就可以对这些文档中的单词进行 tfidf 计数 这样每个文档都由 tfidf 数字向量表示 我认为调用 WordNetLemmatizer lemmatize word 就足够了 然后调用 P
  • SwiftUI:自动预览更新始终暂停

    我有一个现有的应用程序 基本上是一个购物清单应用程序 我试图向其中添加一些甜蜜的 SwiftUI 爱 我的问题是实时预览更新不起作用 不断显示警告 自动预览更新已暂停 我点击了恢复按钮 它构建了应用程序 它显示了当前视图 并且该警告立即再次
  • 警告消息:在“...”中:因子水平无效,生成 NA

    我不明白为什么我收到此警告消息 gt fixed lt data frame Type character 3 Amount numeric 3 gt fixed 1 lt c lunch 100 Warning message In lt
  • Prestashop Web 服务 API 不断要求身份验证

    我遇到这个问题 我从 prestashop 启用了 web 服务 如果我编写 URL 直接从 post 方法传递参数 我可以访问它 mykey 但是 如果我尝试在不传递 ws key 作为参数的情况下进行访问 它会一直要求我进行身份验证 从
  • JavaScript 扩展类

    我有一个基类 function Monster this health 100 Monster prototype growl function console log Grr 我想扩展并创建另一个类 function Monkey ext
  • 如何以编程方式停止 Windows 服务

    关于Windows服务编程 如何停止我的Windows服务 这是一个非常简化的示例代码 C Here is my service class MyTestService cs public class MyTestService Servi
  • 如何使用 Valgrind 检测分段错误细节?

    我有一个 std map 它通过一些 API 调用进行初始化 当我尝试使用此地图时 出现分段错误 如何检测无效代码或无效内容或任何可以帮助我解决问题的细节 代码如下所示 std map lt std string std string gt