问题标签 [google-breakpad]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
450 浏览

c++ - minidump stackwalk vs gdb回溯

我在 Firefox 中有一个漏洞触发器 (CVE-2018-18492),它崩溃并给出 SIGSEGV。我使用 breakpadminidump_stackwalk从崩溃产生的 minidump 文件中获取其堆栈跟踪。我得到如下内容:

然后我用 gdb ( ) 再次运行相同的东西gdb /path/to/firefox/binary,它再次按预期崩溃,我用它bt来获取崩溃点的回溯。但是我得到了一些不同的东西:

注意两个输出的调用堆栈。似乎 gdbReplaceOrInsertBefore在 之上又提供了一个函数调用add,而 minidump 没有。

你知道是什么导致了它们之间的差异,为什么?

0 投票
0 回答
119 浏览

crash - 致命错误:找不到“breakpad-main/src/client/linux/handler/minidump_descriptor.h”文件

我正在将 Google BreakPad 库集成到我的 Android 项目中。在这些步骤下面,我将在运行时为 Crash 生成一个迷你转储文件。请检查并让我知道我是否在正确的路径上:

步骤 1:我从( https://github.com/google/breakpad)克隆了 Google Breakpad 客户端 repo

Step2:我已将Breakpad主库文件夹和google-breakpad文件夹添加到Android项目目录和JNI文件夹中,并将(Andoid.mk,Application.mk,test-break pad.CPP)文件移动到JNI

第三步:我创建了 Gradle 任务来构建 NDK 并与项目构建绑定。在 test-break pad.CPP 中,我们包含了来自 breakpad-main 目录的两个头文件。以下是包含的目录路径。

#include "breakpad-main/src/client/linux/handler/minidump_descriptor.h" #include "breakpad-main/src/client/linux/handler/exception_handler.h"

虽然 ndk-build 我们面临以下错误:**jni/test_breakpad.cpp:4:10: fatal error: 'breakpad-main/src/client/linux/handler/minidump_descriptor.h' file not found #include "breakpad- main/src/client/linux/handler/minidump_descriptor.h" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ 产生1个错误。make: *** [C:/Users/gurmeet.singh1/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/build-binary.mk:478: obj/local/arm64 -v8a/objs-debug/test_google_breakpad/test_breakpad.o] 错误 1

如果我将绝对补丁更新到相对路径 #include "../breakpad-main/src/client/linux/handler/minidump_descriptor.h" #include "../breakpad-main/src/client/linux/handler/异常处理程序.h"**

那么我们在 minidump_descriptor.h 或 exception_handler.h 文件中面临路径问题。

请指导我们如何继续为 Crashstack 跟踪生成 minidump 文件?

0 投票
0 回答
127 浏览

android - 当 gdb 与 minidump-2-core 的核心时,回溯不正确

我正在尝试从我的 Android 应用程序中调试崩溃,此崩溃发生在我的 NDK armv7a so 库中,并且 Google breakpad 报告了小型转储。

我在 qemu-system-arm 中构建了 breakpad,并且 minidump_stackwalk 运行良好:

但是当我尝试 minidump-2-core 和 gdb 时,回溯中只有一帧:

看来gdb只能得到一帧,哪一步错了?

0 投票
3 回答
445 浏览

c++ - google breakpad 中剥离的二进制文件没有符号痕迹

文档中,谷歌 breakpad 是:

一个库和工具套件,允许您将应用程序分发给用户,并删除编译器提供的调试信息

为了证明上述引用,我们将使用这个最小的 c++17 示例进行尝试:

在正常Debug的构建中,它是预期的,所以如果我们尝试运行它,并处理生成的 minidump 文件(借助 和 等主要实用程序dump_symsminidump_stackwalk,结果是一个很好的符号跟踪:

但是在部署中,典型的情况是有两个release版本,一个是normal Release,一个是RelWithDebInfo(同一个release但是有调试符号)。因此,如果您尝试与上述完全相同的例程,而是使用从正常发布二进制文件(部署到客户端)生成的转储文件和二进制文件中的符号,RelWithDebInfo您会得到以下跟踪警告您有关主二进制文件的符号:

还有什么我们需要考虑的吗?

2001 年 5 月 21 日更新

我们用于符号生成的实际脚本:

0 投票
1 回答
135 浏览

c++ - Breakpad中的minidump_stackwalk没有模块错误

我最近开始在 Linux 上使用 google breakpad。我已经克隆了它并成功构建了它。我按照以下步骤操作:https ://chromium.googlesource.com/breakpad/breakpad/+/master/docs/linux_starter_guide.md 。我已经成功创建了我的 minidump 文件和符号文件,但是当我运行 minidump_stalkwalk 时,我得到了这个:

知道如何纠正这个吗?

谢谢。

0 投票
2 回答
503 浏览

c++ - 应用编译器优化时,谷歌 breakpad 堆栈跟踪中没有符号

像Google breakpad这样的崩溃报告工具的主要目的是从剥离的二进制文件中生成核心转储或小型转储文件,以便稍后使用调试符号进行处理。通常,这些二进制文件是应用了编译器优化的发布版本,也被剥离了。

要在 Linux 上重现该问题:

1.构建+安装谷歌breakpad:

2.代码:

CMakeLists.txt

main.cc

dump.sh

3.运行普通Debug版:

4.Process minidump从阶段3生成:

stackwalk

5.运行第 3 阶段-O1

6.Process minidump 如第 4 阶段:

stackwalk

正如我们所见,正确的符号从第 6 阶段的堆栈遍历中消失了。

而在其他工具中GDB,即使在第 5 阶段使用 -O1 时,我们也有正确的跟踪指向正确的位置:

或在其他工具中,如back-cpp

任何想法或提示?

0 投票
0 回答
52 浏览

crash-reports - 获取故障模块名称和异常地址

对于Windows, Win32 APIEXCEPTION_POINTERS被传递到Google-Breakpad'sMinidumpCallback中,因此可以很容易地得到这些信息。例如:

是否可以为macOSand执行此操作Linux

0 投票
0 回答
70 浏览

ios - 如何防止使用 xcodebuild 归档操作剥离符号?

我手头有一个 Xcode 项目,由许多静态库和一个使用它们的 iOS 应用程序组成(我们不打算发布这些库)。其中一部分是基于 Google Breakpad 的崩溃报告实现。

我们发现的一个问题是,我们没有从我们的版本中获取库的崩溃报告中的行号信息。这些是使用生成的xcodebuild archive -project ${PROJECT_PATH} -scheme ${SCHEME_NAME} -archivePath ${OUTPUT_PATH} -UseModernBuildSystem=NO -IDEBuildingContinueBuildingAfterErrors=YES。编辑:使用 Xcode 12。

如果我使用相同的选项archivexcodebuild build(当然除外)运行操作而不是 ,archivePath或者在 IDE 中构建项目,那么我将获得完整的符号信息并且一切正常(至少在 iOS 模拟器上进行测试)。这似乎是唯一的区别——当然,我仍然需要以某种方式生成 .ipa。

构建选项在所有库和应用程序之间共享,包括以下内容:

build关于剥离,the和archiveaction 执行的步骤有什么区别?

如何从 .ipa 的工件创建 .ipa xcodebuild build或者以其他方式强制xcodebuild archive省略/延迟剥离,以便在我转储符号后可以手动执行该操作?

值得一提的是,我也尝试了这些xcodebuild操作的组合,即clean build archive在一个或单独的步骤中 - 没有区别。

(FWIW,我意识到从 Xcode 8.3 开始,该PackageApplication命令已xcrun被弃用。)

0 投票
0 回答
95 浏览

centos7 - 如何在 google-breakpad(Centos 7)上“制作”期间修复错误

当我尝试构建 google-breakpad 时遇到问题。我正在使用 Centos 7(内核:Linux 3.10.0-1160.45.1.el7.x86_64)。我不能做..你能帮帮我吗?(在日志下方... make 2>&1 | tee make.txt)。我不知道如何解决这些错误,我相信我的 gcc 太旧了(可能是 ? gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44))。谢谢 :)

。/配置

使-j4

0 投票
0 回答
19 浏览

python - 编译电报桌面时,它显示我“失败:dump_syms.exe dump_syms.exe.pdb”?

我打算学习telegram的代码,所以我在编译Windows版的telegram(64位),按照官方教程一步一步来。当执行如下语句时:

报错,报错信息如下:

好像是python编译的时候报错breakpad,但是我不懂python,所以不知道怎么解决,求救?