- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
根据 lothar 在 How to generate gcc debug symbol outside the build target 的回答,我可以创建一个由两部分组成的可执行文件 - 剥离的可执行文件和调试信息文件。
创建剥离的可执行文件和调试信息文件后,我正常安装可执行文件(使用 make install
)。但是我不确定如何处理 Debian/Ubuntu 的调试信息文件。
我有两个与使用 GDB 或 LLDB 调试可执行文件相关的问题(如果需要调试):
Debian/Ubuntu 上的调试信息文件的名称是什么?是否有可遵循的约定以便调试器自动将它们与可执行文件相关联?
在 Debian/Ubuntu 上,我应该把调试信息文件放在哪里?调试器在调试可执行文件时找到它们的位置是什么?
这是针对不同平台的相关问题:Debug information file conventions for Red Hat/Fedora?了解 OS X 的相同内容也会很有帮助,因为我有时会使用它。
最佳答案
Fedora 和 Ubuntu 都遵循 Debugging Information in Separate Files 中描述的约定。 .
Gdb 首先检索存在于可执行文件的 .gnu_debuglink
部分中的文件名。 .gnu_debuglink
不包含任何目录名称。 Gdb 然后查找名为(如果我可以使用 shell 语法)$(dirname $executable)/$debuglink
的文件,然后是 /usr/lib/debug/$(dirname $executable)/$debuglink
,用于调试信息。 (它实际上在几个替代位置查找;上面链接的文档有更多信息。)
发行版提供的可执行文件的调试信息可以在例如以下位置找到/usr/lib/debug/usr/sbin/apache2
在 Ubuntu 上或 /usr/lib/debug/usr/sbin/httpd.debug
在 Fedora 上。 (Fedora 添加了一个 .debug
扩展名,如果您愿意,可以轻松地将带有调试信息的文件放在与可执行文件相同的目录中。)
目录 /usr/lib/debug
在构建时被编译到 gdb 中,但是 gdb 用户可以使用 set debug-file-directory dirpath1:dirpath2:.. .
命令。
如果您也有兴趣将源代码提供给 gdb:
Gdb 在编译目录(它从调试信息的 DW_AT_comp_dir
属性中检索)或当前工作目录中查找源代码。用户可以使用 Specifying Source Directories 中描述的各种 gdb 命令对此进行调整。
Fedora 的*-debuginfo
包包括调试信息和源代码。源码安装在/usr/src/debug
下,/usr/lib/debug
下的调试信息包含一个DW_AT_comp_dir
带有目录路径名的属性,例如 /usr/src/debug/httpd-2.4.10
。如果可执行文件是从多个编译单元构建的,则可以有多个 DW_AT_comp_dir
属性。
根据我的经验,Ubuntu 的 *-dbg
包不包含源代码,但用户可以使用命令 apt-get source .. .
。调试信息的 DW_AT_comp_dir
属性类似于 /build/buildd/apache2-2.4.7
。
关于linux - Debian/Ubuntu 的调试信息文件约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787534/
在Debian的最新稳定版本中似乎没有/etc/rc.local Debian Stretch 。它在哪里? /etc/rc.local已过时吗? 最佳答案 rc.local已弃用。 看来您仍然可以拥
尝试从未签名的存储库将 Debian 软件包安装到 Debian 9: # apt-get --allow-unauthenticated update Get:1 http://files.free
我尝试打开 5431 端口,这样输入: sudo iptables -A INPUT -p tcp --dport 5431 --jump ACCEPT iptables-save 当我在链 ipta
我正在尝试为我的应用程序构建一个预编译的 debian 包。我的包中存在一些二进制文件(编译模块)。现在,我收到有关将二进制文件添加到 debian/source/include-binaries 的
Debian 站点很棒 http://www.debian.org/distrib/packages ,我知道搜索工具,但我真的想要一个完整的包/文件/架构目录,采用某种可使用的格式 - xml、js
Debian 如何管理软件包名称的冲突?例如,当不同的存储库中有许多同名的包时。 最佳答案 当有很多同名的包时,APT 怎么知道它们是不同的呢? 不能。所以它会安装版本号最高的版本。 关于debian
我正在构建一个 Debian 软件包,它通过将许多其他紧密相关的软件包声明为依赖项来收集它们。我希望这些依赖项与包的版本完全相同。 Debian 构建系统中有没有办法避免在控制文件中硬编码(除了自己预
我有一个持续集成服务器构建一些软件,这些软件依赖于比 debian squeeze 中提供的 apt 包更新的 libqt4-dev 版本。该版本在 debian wheezy 中可用。我如何告诉 a
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我在 debian 上安装了一个带有 xfce4 的新系统。我的问题是如何让 xfce 在启动时运行?现在我只能用 exec ck-launch-session startxfce4 运行它。 谢谢
我听说我可以使用 apt-get install libc6 来完成此操作,但我需要向/etc/apt/sources.list 添加一些内容才能接收最新的 glibc 版本。 我应该做什么? 最佳答
嗨,我正在尝试在运行 rasbian wheezy 的树莓派上安装 geos,以便我可以在我的 python 脚本中包含 shapely 模块。我尝试使用: git clone git://git.d
您好,我正在尝试在运行 rasbian wheezy 的树莓派上安装 geos,这样我就可以在我的 python 脚本中包含 shapely 模块。我尝试使用:git clone git://git.
我正在尝试在 Debian 8.5.0 上安装 GitLab。我关注installation guide但最后一步失败了,我在文档中找不到任何信息。 gitlab-ctl 重新配置完成 Running
我已经安装了 jetty 9,但我无法将它作为服务启动/停止。 从命令行运行有效。 root@backend:/opt/jetty# service jetty start Job for jetty
我正在寻找一种快速方法来验证 debian/control我的项目文件在将它们发送到构建服务器之前在语法上是有效的。 (即等效于 apache2ctl configtest 但对于 debian 控制
[相关部分] 我的 bitbucket-pipeline 看起来像这样: - step: image: python:3.5.1 name: upload to s3
当我下载一些包源时,(例如foo-[ver].orig.tar.gz、foo-[ver].dsc),我在使用dpkg-source -x foo-[ver].dsc时经常遇到依赖问题。和 dpkg-b
我有一台旧的专用服务器,想将其升级到最新的操作系统版本。 我正在寻找从 升级的最佳方式Debian 6 Squeeze => Debian 8.6 杰西 . 最佳答案 首先,请记住,从一个 Debia
我正在尝试使用 Cpack 构建一个正确命名的 Debian 包。我的 CMakeLists.txt 中有以下内容: set(CPACK_PACKAGE_NAME "something") set(C
我是一名优秀的程序员,十分优秀!