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

做板材外贸一般用哪个网站网站开发需求分析中性能需求

做板材外贸一般用哪个网站,网站开发需求分析中性能需求,菜单栏颜色wordpress,婚纱网站建设案例文章目录 1.背景2.Qt编译生成程序2.1.profile模式的本质 3.执行程序#xff0c;得到core文件4.代码定位4.1.直接使用gdb4.2.使用QtCreator 5.总结6.题外话6.1.profile模式和debug模式的区别 1.背景 在使用Qt时#xff0c;假如在windows#xff0c;当软件崩溃时#xff0c;… 文章目录 1.背景2.Qt编译生成程序2.1.profile模式的本质 3.执行程序得到core文件4.代码定位4.1.直接使用gdb4.2.使用QtCreator 5.总结6.题外话6.1.profile模式和debug模式的区别 1.背景 在使用Qt时假如在windows当软件崩溃时可以利用生成dmp文件来查找软件崩溃的原因及原因出现的位置在源码的哪一行。具体可以看看我这篇博客【Qt下生成pdb文件并在exe崩溃时生成dmp文件且由dmp查询崩溃原因】 但是在linux下要生成dmp文件貌似很麻烦要用到google的BreakPad【Qt Linux系统使用QBreakpad实战】。 有没有方便一点的方法呢 其实有的linux下原生支持一种定位软件崩溃的方式core dump。 2.Qt编译生成程序 建立一个简单的程序并写一段空指针导致崩溃的程序 选择profile模式进行编译 2.1.profile模式的本质 选择profile模式进行编译时除了生成一个以项目名字命名的可执行程序外还会生成一个以项目名字.debug命名的文件。 这个文件不是可执行文件而是一个调试信息文件里面的信息会辅助程序在崩溃时保存当时的堆栈、变量值等。 关于这个*.debug文件的生成我们还可以从Qt的编译输出窗口了解到一些信息 首先g在编译时是加了-g选项表示在编译时把调试信息编译进去相当于debug模式 然后再看这一行 objcopy --only-keep-debug untitled1 untitled1.debug objcopy --strip-debug untitled1 objcopy --add-gnu-debuglinkuntitled1.debug untitled1 chmod -x untitled1.debug 这里用到一个关键命令objcopy关于这个工具的用法可以查看【GNU objcopy命令的探索:转换二进制文件】 可以看到上面这个语句分为四部分依次执行 objcopy --only-keep-debug untitled1 untitled1.debug 使用objcopy工具来创建一个调试信息副本。–only-keep-debug选项告诉objcopy只保留调试信息而不进行其他任何操作。untitled1是原始的目标文件而untitled1.debug是生成的只包含调试信息的文件。objcopy --strip-debug untitled1 这一行再次使用objcopy但这次是去除目标文件untitled1中的调试信息。–strip-debug选项会移除所有的调试信息使得目标文件更小运行速度可能更快但这样会使得调试变得更加困难。objcopy --add-gnu-debuglinkuntitled1.debug untitled1 这一行又用objcopy来重新添加一个GNU风格的调试链接到untitled1可执行文件中。–add-gnu-debuglink后面跟着的untitled1.debug是之前保留的调试信息文件。这样即使调试信息被剥离执行文件中仍然有一个指向原始调试信息的链接可以在调试时恢复调试信息。chmod -x untitled1.debug 最后一行使用chmod命令改变untitled1.debug文件的权限使得这个文件不可执行。-x选项表示移除执行权限。 总的来说这四段命令的目的是对原可执行文件优化去除调试信息后仍然能够恢复和执行原始的调试信息以便于后续的调试工作。 3.执行程序得到core文件 将编译出来的两个文件拷贝到一个单独的文件夹目的是避嫌测试在空白环境能不能运行 然后在此文件夹打开控制台或者打开控制台后cd到这个文件夹 执行两个语句这两个语句的作用可以查看这里【Linux生成core文件相关配置core文件调试示例】 ulimit -c 4096 sudo sysctl kernel.core_pattern%e.core然后执行程序 ./untitled1可以看到生成了core文件不知道为啥.code后面还加了个数字 4.代码定位 在得到core文件后假如想要知道到底是哪一行代码导致了程序崩溃有两种方式 4.1.直接使用gdb gdb untitled1 untitled1.core.9305可以看到崩溃的地方被显示出来了。 还可以把这个ptr运行时的值打印出来 print ptr4.2.使用QtCreator 选择Debug–》Start Debugging–》Load Core File 在弹窗中选择刚才的core文件选好后可执行文件会自动填充。然后点击ok。 然后就可以调试了 同样定位到了正确的代码处并且还把当时的各个变量的值直接显示出来。 所以这种方式应该是比较适合咱们这种一般人。 5.总结 Linux下程序的崩溃文件生成相对于Windows下还方便一点Windows下还得自己保存dmp文件可能各有千秋吧。 暂时还没试过在A电脑编译程序然后放到B电脑运行产生core文件然后再拿回A电脑进行代码定位。有空的话得测试一下。 6.题外话 6.1.profile模式和debug模式的区别 我们直接把这两种的编译语句拿出来对比一下 这是debug的 g -c -pipe -g -stdgnu1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../untitled1 -I. -I/opt/Qt/5.15.2/gcc_64/include -I/opt/Qt/5.15.2/gcc_64/include/QtWidgets -I/opt/Qt/5.15.2/gcc_64/include/QtGui -I/opt/Qt/5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I. -I/opt/Qt/5.15.2/gcc_64/mkspecs/linux-g -o main.o ../untitled1/main.cpp 这shiprofile的 g -c -pipe -O2 -g -stdgnu1z -Wall -Wextra -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../untitled1 -I. -I/opt/Qt/5.15.2/gcc_64/include -I/opt/Qt/5.15.2/gcc_64/include/QtWidgets -I/opt/Qt/5.15.2/gcc_64/include/QtGui -I/opt/Qt/5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I. -I/opt/Qt/5.15.2/gcc_64/mkspecs/linux-g -o main.o ../untitled1/main.cpp对比一下可以看到主要是在profile下多了 -O2 -DQT_NO_DEBUG这两个选项。 -O2进行代码优化、优化等级为2具体请查阅相关资料。 -DQT_NO_DEBUG这个应该是个编译定义、编译选项当出现这个定义时一部分Qt代码将不会被编译到可执行文件中假如这个定义是在链接库时生效的还可以在编译时对库里面的代码进行选择库里面的代码不是在编程这个库时就已经决定了吗宏定义不是预编的一种吗既然是预编译那么对于一个库来收在正式编译前代码已经通过预编译进行了选择吧为何再加-DQT_NO_DEBUG还有用 -DQT_NO_DEBUG这表示在编译时添加一个宏定义和在代码中增加 #define QT_NO_DEBUG的效果一样。之所以加这个是因为在Qt的头文件中有很多地方都利用到了这个宏定义。加了这个定义后Qt会相应地做了一些优化。 参考 【Linux生成core文件相关配置core文件调试示例】 【【问题记录】Ubuntu 22.04 环境下程序报段错误核心已转储怎么使用 core 文件和GDB调试器 解决】
http://www.w-s-a.com/news/760877/

相关文章:

  • 县城乡建设局网站微商城小程序哪个好
  • 博物馆门户网站建设优势重庆seo排名系统运营
  • 哪有app制作公司上海seo排名
  • 长沙建站seo公司北京招聘信息
  • 建设网站情况说明范文四川个人证书查询网官网
  • 推广学校网站怎么做公司可以做多个网站吗
  • 游戏网站后台建设郑州定制网站
  • 商务公司网站建设网站建设如何自学
  • 现在建网站可以拖拉式的吗中国国内最新新闻
  • phpstorm网站开发产品logo设计
  • 电子商务网站建设与运营什么是单页面网站
  • 西安优化网站公司南阳微信网站
  • 购物网站线下推广方案佛山快速建站哪家服务专业
  • 临沂网站排名外贸网站推广方法之一
  • 手机网站百度关键词排名查询吕梁网站制作吕梁安全
  • 做网站媒体wordpress管理员账号数据库添加
  • php如何自己做网站wordpress怎么修改编辑代码
  • 网站建网站建设公司WordPress互联
  • 泊头市网站建设价格wordpress导航菜单位置
  • 怎么设立网站赚广告费网页制作素材模板图片
  • 做班级网站的目的网站设计制作公司需要什么资质
  • 济南做网站哪家好财政网站平台建设不足
  • php网站建设招聘网站开发与设计论文
  • 上海 网站建设平台 补贴网站开发招标文件范本
  • 延安网站建设公司电话手机上那个网站做农产品推广比较好
  • 增城哪家网站建设好如何做网站实名认证
  • 常州地区做网站个人购物网站需要备案吗
  • 网站建设公司 跨界鱼科技专业做服务器的网站都有哪些
  • 欧洲网站服务器网站建设费用计入什么科目
  • 网站的色调苏州策划网站模板建站公司