Q
CMake的保存剥离调试信息
2015-09-30
22 views
8 likes
8
这是一个通常的做法编译与调试符号,然后使用objcopy
的二进制分成释放可执行文件,并与调试信息的文件(然后换行到单独的包或存储符号服务器上)。CMake的保存剥离调试信息
如何调试符号在适当的CMake分开?我只看过一些讨论和不完整的代码示例。
平台是Linux和GCC。
2015-09-30
Velkan
A
回答
2
CMake的不具有这种直接的支持,但你可以使用一些POST_BUILD和INSTALL步骤来实现你想要的结果。但是,值得注意的是,使用objcopy
并不是做这种事情的唯一方法。你也可以使用build-id,这可能更容易用CMake来强大的实现。
这里有一个pretty good description of your choices and the methods,在几年前由Michael Hertling发布到CMake邮件列表中。我只是在这里挑选出可供选择的参考文献,但我建议阅读该链接。 GDB文档中还有更多的complete discussion of the two alternatives,这些文档应该填写关于这两种方法的剩余空白(调试链接与build-id)。下面是迈克尔的常规构建-ID的方法(集结号在他的例子明确给出,阅读引用的文章为它有望代表的解释):
CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(BUILDID C)
SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(BUILDID "abcdef1234")
STRING(SUBSTRING "${BUILDID}" 0 2 BUILDIDPREFIX)
STRING(SUBSTRING "${BUILDID}" 2 8 BUILDIDSUFFIX)
FILE(WRITE ${CMAKE_BINARY_DIR}/main.c "int main(void){return 0;}\n")
ADD_EXECUTABLE(main main.c)
SET_TARGET_PROPERTIES(main PROPERTIES
LINK_FLAGS "-Wl,--build-id=0x${BUILDID}")
ADD_CUSTOM_COMMAND(TARGET main POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:main>
${CMAKE_BINARY_DIR}/main.debug
COMMAND ${CMAKE_STRIP} -g $<TARGET_FILE:main>)
INSTALL(FILES ${CMAKE_BINARY_DIR}/main.debug
DESTINATION ${CMAKE_BINARY_DIR}/.build-id/${BUILDIDPREFIX}
RENAME ${BUILDIDSUFFIX}.debug)
配置与CMAKE_BUILD_TYPE ==调试并建立;随后,调用
GDB -EX“设置调试文件的目录。” -ex“文件主”
从CMAKE_BINARY_DIR中,您将按预期阅读“找不到调试符号 ”。现在,发出 “让安装”,再调用GDB,念道: “从… /读取符号构建-ID/AB/cdef1234.debug”
正如你所看到的,调试信息文件与剥离 可执行由构建ID仅连接;没有objcopy视线。
以上使用的事实是.debug
文件预计是一个正常的可执行文件,调试信息不会被剥离。
2015-11-23 20:59:54
相关问题
- 1. 剥离Windows DLL调试信息?
- 2. “源信息剥离”的消息
- 3. CMake剥离静态库
- 4. 剥离OLE头信息(MS Access/SQL Server)
- 5. 从外部网页上剥离信息
- 6. 调试信息
- 7. 调试,信息
- 8. 调试信息
- 9. 存储保存的信息
- 10. 运送产品前剥离最大量的信息
- 11. Ajax调用不保存表单信息
- 12. NSUserDefaults保存信息
- 13. 保存UIImageView信息
- 14. mnesia保存信息
- 15. 使用cmake编译并包含调试信息
- 16. Win32:存储调试信息以保证崩溃
- 17. -sass-调试信息
- 18. GCC调试信息
- 19. DLL调试信息
- 20. 从FileInputStream或FileReader中剥离HTTP标头信息
- 21. 如何保存/保存程序信息
- 22. 剥离的#define
- 23. 您的应用信息无法保存。再试试 – iTunesConnect
- 24. Android Studio中外部剥离共享库的本地调试
- 25. 以Java保存信息
- 26. 保存PHP会话信息
- 27. JSON保存重复信息
- 28. 保存统计信息mysql
- 29. 什么信息就保存
- 30. Excel宏保存信息
请登录后查看评论内容