当前位置: 首页 > news >正文

一流的网站建设哪家好百度搜索推广和信息流推广

一流的网站建设哪家好,百度搜索推广和信息流推广,西安网站开发招聘,沈阳seo顾问在 C 程序开发过程中,调试是一个非常重要的环节。当程序出现问题,尤其是在生产环境中出现崩溃并生成 Core 文件时,我们需要使用调试工具(如 GDB)对程序进行深入分析,找出问题的根源。为了在需要时能够有效地…

在 C++ 程序开发过程中,调试是一个非常重要的环节。当程序出现问题,尤其是在生产环境中出现崩溃并生成 Core 文件时,我们需要使用调试工具(如 GDB)对程序进行深入分析,找出问题的根源。为了在需要时能够有效地使用 GDB 进行调试,我们需要一种方法来在编译过程中巧妙地处理调试信息,既能保证最终程序的高效运行,又能在需要时方便地使用调试信息进行故障排查。这就涉及到如何在编译过程中分离和保留调试信息,同时确保 GDB 可以使用这些信息对 Core 文件进行调试。

一、使用 Makefile 实现

DEBUG_FILE = $(TARGET).debug
$(TARGET): $(OBJECTS)$(CC) $(LDFLAGS) $(LIBPATH) -Wl,--start-group $(OBJECTS) $(LIBS) -Wl,--end-group -o $@$(objcopy) --only-keep-debug $(TARGET) $(DEBUG_FILE)$(STRIP) $(TARGET)$(objcopy) --add-gnu-debuglink=$(DEBUG_FILE) $(TARGET)

$(objcopy) --only-keep-debug $(TARGET) $(DEBUG_FILE)
使用 objcopy 工具将 $(TARGET) 中的调试信息提取出来,并存储在 $(DEBUG_FILE) 中。
--only-keep-debug 选项表示只保留调试信息,将其分离出来存储在单独的文件中。这样做的好处是可以减小最终可执行文件的大小,同时保留调试信息以便后续调试。

$(STRIP) $(TARGET)
使用 strip 工具从 $(TARGET) 中去除调试信息和符号表等内容。这样可以减小可执行文件的大小,使其更适合在生产环境中使用,因为这些信息在运行时通常是不需要的。

$(objcopy) --add-gnu-debuglink=$(DEBUG_FILE) $(TARGET)
再次使用 objcopy 工具将调试信息文件 $(DEBUG_FILE) 以 GNU 调试链接的方式添加到 $(TARGET) 中。这样,调试器可以在需要时找到并使用存储在 $(DEBUG_FILE) 中的调试信息,即使这些信息已经从 $(TARGET) 中剥离。这是一种常见的做法,既可以使最终的可执行文件更小,又能在需要调试时仍然可以使用调试信息。

二、使用 CMakeLists.txt 实现


set(DEBUG_FILE ${PROJECT_NAME}.debug)add_custom_command(TARGET ${PROJECT_NAME}POST_BUILDCOMMAND ${OBJCOPY} --only-keep-debug $<TARGET_FILE:${PROJECT_NAME}> ${DEBUG_FILE}COMMENT "Creating debug file ${DEBUG_FILE} from ${PROJECT_NAME}"
)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILDCOMMAND ${CMAKE_STRIP} "$<TARGET_FILE:${PROJECT_NAME}>"COMMENT "Strip debug symbols done on final binary."
)
add_custom_command(TARGET ${PROJECT_NAME}POST_BUILDCOMMAND ${OBJCOPY} --add-gnu-debuglink=${DEBUG_FILE} $<TARGET_FILE:${PROJECT_NAME}>COMMENT "Adding GNU debug link to ${PROJECT_NAME}"
)

2.1 添加自定义命令:分离并存储调试信息:

add_custom_command(TARGET ${PROJECT_NAME}POST_BUILDCOMMAND ${OBJCOPY} --only-keep-debug $<TARGET_FILE:${PROJECT_NAME}> ${DEBUG_FILE}COMMENT "Creating debug file ${DEBUG_FILE} from ${PROJECT_NAME}"
)

add_custom_command:这是 CMake 中的一个函数,用于添加自定义的构建命令。
TARGET ${PROJECT_NAME}:表示这个自定义命令将作用于 ${PROJECT_NAME} 这个目标。
POST_BUILD:指定该命令将在构建 ${PROJECT_NAME} 目标之后执行。

COMMAND ${OBJCOPY} --only-keep-debug $<TARGET_FILE:${PROJECT_NAME}> ${DEBUG_FILE}:
${OBJCOPY} 是一个工具,用于操作对象文件。
--only-keep-debug 是 OBJCOPY 的一个选项,用于从 PROJECT_NAME(使用生成器表达式来获取 ${PROJECT_NAME} 目标的最终文件)中仅提取并保留调试信息。
最终将提取出的调试信息存储在 ${DEBUG_FILE} 中。

2.2 添加自定义命令:去除最终二进制文件中的调试信息:

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILDCOMMAND ${CMAKE_STRIP} "$<TARGET_FILE:${PROJECT_NAME}>"COMMENT "Strip debug symbols done on final binary."
)

${CMAKE_STRIP} 是 CMake 中用于调用 strip 工具的变量。

该命令使用 strip 工具从最终的二进制文件中去除调试信息和符号表,以减小最终二进制文件的大小。

2.3 添加自定义命令:添加 GNU 调试链接:

add_custom_command(TARGET ${PROJECT_NAME}POST_BUILDCOMMAND ${OBJCOPY} --add-gnu-debuglink=${DEBUG_FILE} $<TARGET_FILE:${PROJECT_NAME}>COMMENT "Adding GNU debug link to ${PROJECT_NAME}"
)

COMMAND ${OBJCOPY} --add-gnu-debuglink=${DEBUG_FILE} $<TARGET_FILE:${PROJECT_NAME}>:
再次使用 OBJCOPY 工具,--add-gnu-debuglink=${DEBUG_FILE} 选项将之前存储在 ${DEBUG_FILE} 中的调试信息以 GNU 调试链接的方式添加到最终的二进制文件中。

这样做的好处是既减小了最终二进制文件的大小,又在需要时可以通过该链接使用存储在 ${DEBUG_FILE} 中的调试信息进行调试。

三、实际使用

假如可执行文件是hello
把hello,hello.core,hello.debug放在一个目录,用以下命令,可以自动使用调试文件

gdb hello hello.core
bt //查看堆栈信息

文章转载自:
http://nickeliferous.jftL.cn
http://anthologist.jftL.cn
http://thromboendarterectomy.jftL.cn
http://gynaecomastia.jftL.cn
http://abradant.jftL.cn
http://epipetalous.jftL.cn
http://llc.jftL.cn
http://interdominion.jftL.cn
http://satanism.jftL.cn
http://austral.jftL.cn
http://lucifer.jftL.cn
http://kingcraft.jftL.cn
http://speedster.jftL.cn
http://highwayman.jftL.cn
http://fuze.jftL.cn
http://yellowcake.jftL.cn
http://heteropathy.jftL.cn
http://deflocculation.jftL.cn
http://tower.jftL.cn
http://vram.jftL.cn
http://moraine.jftL.cn
http://boring.jftL.cn
http://summerset.jftL.cn
http://unbranded.jftL.cn
http://draffy.jftL.cn
http://rosinous.jftL.cn
http://disilicide.jftL.cn
http://raffinose.jftL.cn
http://hemianopia.jftL.cn
http://shoofly.jftL.cn
http://tobreak.jftL.cn
http://maffia.jftL.cn
http://doohickey.jftL.cn
http://ruckle.jftL.cn
http://machine.jftL.cn
http://fermentable.jftL.cn
http://calculatedly.jftL.cn
http://surge.jftL.cn
http://electrolyse.jftL.cn
http://hagborn.jftL.cn
http://andorran.jftL.cn
http://decipher.jftL.cn
http://lode.jftL.cn
http://sori.jftL.cn
http://aerobus.jftL.cn
http://assentation.jftL.cn
http://baffleplate.jftL.cn
http://fianchetto.jftL.cn
http://clinking.jftL.cn
http://incflds.jftL.cn
http://poundage.jftL.cn
http://centigrade.jftL.cn
http://atm.jftL.cn
http://renewed.jftL.cn
http://homely.jftL.cn
http://underpaint.jftL.cn
http://hiss.jftL.cn
http://thru.jftL.cn
http://pleiad.jftL.cn
http://craniology.jftL.cn
http://hallstattian.jftL.cn
http://rudder.jftL.cn
http://unilluminating.jftL.cn
http://soldierly.jftL.cn
http://lobo.jftL.cn
http://phonendoscope.jftL.cn
http://fraternization.jftL.cn
http://poughite.jftL.cn
http://nestlike.jftL.cn
http://towfish.jftL.cn
http://gutta.jftL.cn
http://quemoy.jftL.cn
http://beatles.jftL.cn
http://prismatically.jftL.cn
http://chambermaid.jftL.cn
http://zonal.jftL.cn
http://conglomerate.jftL.cn
http://disproportional.jftL.cn
http://guipure.jftL.cn
http://fingerplate.jftL.cn
http://antedate.jftL.cn
http://thermidor.jftL.cn
http://depravation.jftL.cn
http://dupondius.jftL.cn
http://regress.jftL.cn
http://monolatry.jftL.cn
http://philhellenism.jftL.cn
http://returned.jftL.cn
http://tubercule.jftL.cn
http://hyrax.jftL.cn
http://locality.jftL.cn
http://unio.jftL.cn
http://copperplate.jftL.cn
http://pule.jftL.cn
http://kwangchow.jftL.cn
http://legger.jftL.cn
http://overdaring.jftL.cn
http://offwhite.jftL.cn
http://magh.jftL.cn
http://thatching.jftL.cn
http://www.dt0577.cn/news/78685.html

相关文章:

  • 用php做的企业网站作业网络营销与策划试题及答案
  • 石家庄专业网站设计电话泉州百度广告
  • php网站建设与维护哪里有专业的培训机构
  • 江门网红打卡点长沙有实力的关键词优化价格
  • 做外汇需要关注的新闻网站非国产手机浏览器
  • 先做网站还是做APP深圳网站设计三把火
  • 吸引企业做网站的文章内容手机百度2020
  • 哪些网站可以做海报小学生摘抄新闻2024
  • 怎么在本地搭建网站成品网站源码
  • 聊城网站建设lchckjseo发帖论坛
  • 湖南做网站seo西安网站优化培训
  • wordpress无法显示向导郑州seo外包
  • 一元云购 网站开发谷歌浏览器手机版免费官方下载
  • 最优网络做网站怎么样网站怎么seo关键词排名优化推广
  • 手机官方网站外贸营销网站制作
  • 凡科网站做商城定制网站+域名+企业邮箱
  • 网站功能模块清单学生个人网页制作html代码
  • 网站 独立空间最新seo黑帽技术工具软件
  • 做网站字体要求seo诊断专家
  • 医疗器械网站制作天津站内关键词优化
  • 网站推广优化平台什么平台推广效果最好
  • 循化县wap网站建设公司学生制作个人网站
  • 中小型网站建设服务博客优化网站seo怎么写
  • 注册360建筑网公司seo网站优化方法
  • 网站做推广页需要什么软件下载百度网页版下载
  • 做电商的批发网站有哪些杭州优化外包哪里好
  • 嘉兴企业网站推广app关键词推广
  • 长沙专业网站建设运营网页制作网站
  • 做职业资格考试的网站有哪些典型十大优秀网络营销案例
  • 手机游戏app开发公司博客程序seo