问题标签 [debug-information]
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.
compilation - 如何将我的 NVRTC 程序源与文件相关联?
我正在使用 NVRTC 编译内核。相关的 API 调用是:
如您所见,源是原始字符串,与文件无关。这意味着当你--generate-line-info
,你得到行号,但没有相关的文件名。这意味着如果您随后使用 NSight Compute - 您将无法看到您的内核源代码。
显然,无论是 NSight Compute 本身还是 NVRTC 本身,都无法确定原始源镜像在某个文件中。但是必须有一些方法来解决这个问题:
- 也许我在 NVRTC API 中遗漏了一些可以使源 <-> 文件关联的东西?
- 也许我们可以操纵生成的编译程序(合理地,而不是手动,或编写我自己的新 API)来建立关联?
- 也许我们可以以某种方式将源代码推入编译的程序中?
shared-libraries - arm-none-eabi-objdump:加载共享库时出错:libdebuginfod.so.1:无法打开共享对象文件
如果您对此有答案或有更多信息,我将不胜感激。我正在听从这里的建议,通过发布这个问题然后提供我已经找到的答案来提供一些不请自来的帮助。
我有一个裸机 ARM 板,我正在为它构建一个跨工具链,来自 GNU binutils、gcc 和 gdb 的源代码,以及 SourceWare 的 Newlib。我让这四个工作并将 DoNothing.c 交叉构建到 ELF 文件中 - 但我无法用它来反汇编它:
错误是:
我会跟进解决方案。
package - 如何为从二进制文件构建的 rpm 自定义构建 debuginfo 包?
我想从二进制文件而不是源代码构建我的主 rpm,这已经完成,但现在我需要生成一个 debug-info rpm 包来与我的主 rpm 一起
我想做一些简单的事情
Rpmbuild 有可能吗?
c++ - 显式模板实例化和调试加载时间
我一直想知道使用显式模板实例化是否可以帮助减少调试器加载二进制文件所需的时间。类似于通过相同机制减少链接时间的东西。
同样,有什么方法可以衡量这个吗?我可以readelf -e
用来查看调试信息的大小,比如
有没有更细粒度的(没有所有血淋淋的细节)?
有关信息,这是 Linux (RHEL 6.6) 上的 GCC 和 GDB。
linux - 内核安装错误:写入失败(设备上没有剩余空间)
我正在 Linux 服务器上安装 SystemTap。当我运行测试脚本时:sudo stap -v -e 'probe vfs.read {printf("read performed"); exit()}'
我收到以下错误消息。
我发现这个有用的链接Linux run kernel probe systemtap script failed with semantic error: no match",建议我下载相应的
- kernel-debuginfo-common-
uname -r
- 内核调试信息-
uname -r
由于我拥有的内核版本是 4.15.0-137-generic,我在这里找到了所需的内核包,http ://ddebs.ubuntu.com/pool/main/l/linux/
但是,当我使用它构建它时sudo dpkg -i --force-overwrite linux-image-unsigned-4.15.0-137-generic-dbgsym_4.15.0-137.141_amd64.ddeb
c - 单行号映射到`.debug_line`中的多个起始地址
当我尝试获取.debug_line
部分的内容时,我使用了诸如decodedline
获取可读格式之类的命令。但是当我试图深入研究结果的细节时,我无法理解为什么会有单行号映射到多个起始地址。我们应该将这个起始地址标识为什么?
以上是 的结果readelf --debug=decodedline ./bof
。以下是起始地址的源代码和对应的汇编语言(intel)。
bof源代码:
汇编语言:
对于上面的示例,第 10 行映射到0x1193
和0x119d
。谁能帮我解释一下这个原因?谢谢。
command-line - NVIDIA 的 OpenCL 编译器是否支持 --generate-line-info 之类的东西?
当(动态)将 CUDA 代码编译为 PTX 时,您可以传递--generate-line-info
命令行参数,并在您的 PTX 中获取一堆.loc
条目,这些条目将 PTX 位置与源文件位置相关联。
clBuildProgram
在 NVIDIA 平台上将OpenCL 代码编译为 PTX ( ) 时是否也可以使用类似的东西?
c++ - 如何使用 WIN32 调试信息 API 获取多态 C++ 对象的类名?
win32 调试器在检查器窗口中显示有问题的类名,这意味着信息必须可用,只有微软开发人员公开该功能才有问题。
出于调试/诊断/开发目的,我想编写一个函数来获取 c++ 对象的实例化类名作为输出,并将指向基类的指针作为输入。
例如:
因此,请提供实现函数GetNameOfInstanciatedClassByBaseClassPtr的解决方案。
所以问题是:需要什么 lib/header/function ?我想一个用于 win32 调试信息的 API 会有所帮助吗?
在我的情况下,编写返回字符串或 type_info 的虚拟函数不是可接受的解决方案。
正如我之前所说:这仅用于诊断/调试/开发目的,不适用于生产代码,因此请避免讨论干净代码的目的。我也可以手动收集信息,但因为它大约有 260 个课程,所以我可能会更快。;)
编辑:在问题的第一个版本中,我在基类的构造函数中调用了函数“GetNameOfInstanciatedClassByBaseClassPtr”,但我观察到该信息在构造函数时尚不可用。所以我把它放在一个总是被调用的 Init 方法中。在此方法中,调试器显示实例化类的名称,因此如果我将对函数 GetNameOfInstanciatedClassByBaseClassPtr 的调用放入我的 init 方法中,则可以获得信息。rtti-typeinfo 似乎也是如此。
EDIT2:如前所述,它可能不适用于 void*,您可能需要 B* 类。但是,这很容易测试。请注意,有些事情可能是编译器特定的。所以我再次调整了这个问题。
所以我从评论中得到的答案是使用
- 运行时类型信息 (rtti)(通过本机 c++) [1]
- Microsoft 调试接口访问 SDK(通过 COM) [2]
[1] 您需要在文件或项目的编译器设置中启用此功能。
[2] 这是更复杂的解决方案。
systemtap - polkit-0.115-11.el8.x86_64 的调试信息
我正在尝试在 polkit 函数上使用 systemtap 挂钩,但我收到一个错误,我需要安装 debuginfo。我找不到 polkit 包的调试信息 - polkit-0.115-11.el8.x86_64。有谁知道我在哪里可以找到它?谢谢。
clang - clang -g0 与 -g1 与 -g2 等
我了解到可以通过标志控制要产生的调试信息的数量-g<num>
,从最多0
到最少2
,但是我无法在任何地方找到这些标志中包含哪些信息,以及被丢弃的信息。