保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

程序core了,看到的还是问号

  一背景
  C程序发布的时候,经常去掉g编译选项的,那么这就遇到一个问题,当程序运行coredump后,想去调试查看core的具体信息,会发现很多符号都被优化掉了,看到的栈信息要么是问号,要么变量无法打印值;去掉符号表,却可以让程序体积更小,而且不容易泄漏程序的信息,更安全些。
  这就产生了矛盾,我们在运行的时候不需要符号表,调试的时候需要符合表,那我们能否把符号表在发布程序的时候删除,调试的时候加载符号表信息那,这样就满足了需要。二测试程序2。1测试源码
  为了直观起见,先写个简单的c代码用于演示,代码如下:1includestdio。h23intfunc()4{5inta5;6intba58;7intpiNULL;8pi0;9printf(Infuncais:dbis:d,a,b);10}1112intmain()13{14intafunc();15printf(d,a);16}2。2编译
  编译下:miaoubuntulab:ctestgccotesttestdebug。c
  gdb调试看看:rootubuntulab:homemiaoctestgdb。testqReadingsymbolsfrom。test。。。(Nodebuggingsymbolsfoundin。test)(gdb)quit
  可以看到显示没有调试符号表信息,我们重新用g编译选项试试:rootubuntulab:homemiaoctestgccotestdebugg。testdebug。crootubuntulab:homemiaoctestlstesttestdebugtestdebug。crootubuntulab:homemiaoctestgdb。testdebugqReadingsymbolsfrom。testdebug。。。(gdb)
  其实也不是完全没有符号,也还是有不少的,只是没有调试信息,可以用命令查看:rootubuntulab:homemiaoctestreadelfh。testgrepstringtableindexSectionheaderstringtableindex:30rootubuntulab:homemiaoctestrootubuntulab:homemiaoctestreadelfh。testdebuggrepstringtableindexSectionheaderstringtableindex:36
  两个符号表的大小是有差距的差距6个,这个表示符号表的index的个数。查下段表更清晰:rootubuntulab:homemiaoctestreadelfS。testdebuggrep。debug〔28〕。debugarangesPROGBITS000000000000000000003035〔29〕。debuginfoPROGBITS000000000000000000003065〔30〕。debugabbrevPROGBITS000000000000000000003159〔31〕。debuglinePROGBITS0000000000000000000031fd〔32〕。debugstrPROGBITS00000000000000000000326e〔33〕。debuglinestrPROGBITS000000000000000000003353rootubuntulab:homemiaoctestrootubuntulab:homemiaoctestrootubuntulab:homemiaoctestrootubuntulab:homemiaoctestreadelfS。testgrep。debugrootubuntulab:homemiaoctest2。3删除符号表
  编译的时候可以采用g编译,然后发布的时候去掉符号表,可以使用命令:strip。如下最简单的处理下:rootubuntulab:homemiaoctestllal。testrwxrwxrx1miaomiao15984Apr3010:41。testrwxrxrx1rootroot17304Apr3010:48。testdebugrwrwr1miaomiao171Apr3010:41。testdebug。crootubuntulab:homemiaocteststrip。testdebugrootubuntulab:homemiaoctestllaltotal44drwxrwxrx2miaomiao4096Apr3011:19。drwxrx16miaomiao4096Apr3010:41。。rwxrwxrx1miaomiao15984Apr3010:41testrwxrxrx1rootroot14464Apr3011:19testdebugrwrwr1miaomiao171Apr3010:41testdebug。crootubuntulab:homemiaoctestnmstestdebugnm:testdebug:nosymbolsrootubuntulab:homemiaoctestnmstest000000000000038crabitag0000000000004010Bbssstart0000000000004010bcompleted。0wcxafinalizeGLIBC2。2。5。。。
  可以看到strip处理过的testdebug,比不用g选项的编译出来的test文件更小,通过nm命令验证下,确实任何符号都被删除了,而不用g编译的文件还可以看到符号信息的。三符号表引入测试3。1core测试
  默认情况下不会产生core文件,加大core文件尺寸:rootubuntulab:homemiaoctestulimitcunlimitedrootubuntulab:homemiaoctesttailf
  重新编译运行:rootubuntulab:homemiaoctestgccgotestdebug。testdebug。crootubuntulab:homemiaocteststriptestdebugotestdebugstrip
  看下core的信息:rootubuntulab:homemiaoctesttailfvarlogapport。logERROR:apport(pid125154)SatApr3011:52:202022:executable:homemiaoctesttestdebugstrip(commandline。testdebugstrip)ERROR:apport(pid125154)SatApr3011:52:202022:executabledoesnotbelongtoapackage,ignoringERROR:apport(pid125154)SatApr3011:52:202022:writingcoredumptocore。homemiaoctesttestdebugstrip。0。3fc6ea1694404d7281f87221d0b6684d。125153。3233349(limit:1)
  调试下看看:rootubuntulab:homemiaoctestgdb。testdebugstripvarlibapportcoredumpcore。homemiaoctesttestdebugstrip。0。3fc6ea1694404d7281f87221d0b6684d。125153。3233349qReadingsymbolsfrom。testdebugstrip。。。(Nodebuggingsymbolsfoundin。testdebugstrip)〔NewLWP125153〕〔Threaddebuggingusinglibthreaddbenabled〕Usinghostlibthreaddblibrarylibx8664linuxgnulibthreaddb。so。1。Corewasgeneratedby。testdebugstrip。ProgramterminatedwithsignalSIGSEGV,Segmentationfault。00x000055d8d93bc178in??()(gdb)where00x000055d8d93bc178in??()10x000055d8d93bc1b3in??()20x00007f173a2ebfd0inlibcstartcallmain(mainmainentry0x55d8d93bc19d,argcargcentry1,argvargventry0x7ffe16913908)at。。sysdepsnptllibcstartcallmain。h:5830x00007f173a2ec07dinlibcstartmainimpl(main0x55d8d93bc19d,argc1,argv0x7ffe16913908,initoptimizedout,finioptimizedout,rtldfinioptimizedout,stackend0x7ffe169138f8)at。。csulibcstart。c:40940x000055d8d93bc085in??()(gdb)bt00x000055d8d93bc178in??()10x000055d8d93bc1b3in??()20x00007f173a2ebfd0inlibcstartcallmain(mainmainentry0x55d8d93bc19d,argcargcentry1,argvargventry0x7ffe16913908)at。。sysdepsnptllibcstartcallmain。h:5830x00007f173a2ec07dinlibcstartmainimpl(main0x55d8d93bc19d,argc1,argv0x7ffe16913908,initoptimizedout,finioptimizedout,rtldfinioptimizedout,stackend0x7ffe169138f8)at。。csulibcstart。c:40940x000055d8d93bc085in??()
  因为没有符号信息,很可惜看不到具体的符号信息,也不知道在哪里core了。(gdb)symbolfilehomemiaoctesttestdebugLoadnewsymboltablefromhomemiaoctesttestdebug?(yorn)yReadingsymbolsfromhomemiaoctesttestdebug。。。(gdb)where00x000055d8d93bc178infunc()at。testdebug。c:810x000055d8d93bc1b3inmain()at。testdebug。c:14(gdb)
  看重点,加载符号文件,这个是直接加载没有strip前的文件,是包含符号表的。我们清晰的可以看到core的位置是在第8行。
  顺便说下,gdb调试多线程,打印多线程堆栈信息命令:threadapplyallbtfull3。2提取符号表rootubuntulab:homemiaoctesteustriptestdebugftestdebug。symrootubuntulab:homemiaoctestlltotal100drwxrwxrx2miaomiao4096Apr3012:23。drwxrx16miaomiao4096Apr3012:09。。rwxrxrx1rootroot15984Apr3011:23testrwxrxrx1rootroot14464Apr3011:24testdebugrwxrxrx1rootroot14568Apr3012:23testdebugrwrwr1miaomiao205Apr3011:38testdebug。crwxrxrx1rootroot14464Apr3011:52testdebugstriprwxrxrx1rootroot5864Apr3012:23testdebug。symrootubuntulab:homemiaoctestfiletest。symtest。sym:cannotopentest。sym(Nosuchfileordirectory)rootubuntulab:homemiaoctestfile。testdebug。sym。testdebug。sym:ELF64bitLSBsharedobject,x8664,version1(SYSV),dynamicallylinked,interpreter04,BuildID〔sha1〕5881c326d8f784139407ed0c7576149cb19270f4,forGNULinux3。2。0,withdebuginfo,notstripped
  我们通过命令:eustriptestdebugftestdebug。sym提取testdebug中的符号表,保存为文件testdebug。sym。
  我们gdb调试的时候导入这个符号试试:rootubuntulab:homemiaoctestgdb。testdebugstripvarlibapportcoredumpcore。homemiaoctesttestdebugstrip。0。3fc6ea1694404d7281f87221d0b6684d。125153。3233349qReadingsymbolsfrom。testdebugstrip。。。(Nodebuggingsymbolsfoundin。testdebugstrip)〔NewLWP125153〕〔Threaddebuggingusinglibthreaddbenabled〕Usinghostlibthreaddblibrarylibx8664linuxgnulibthreaddb。so。1。Corewasgeneratedby。testdebugstrip。ProgramterminatedwithsignalSIGSEGV,Segmentationfault。00x000055d8d93bc178in??()(gdb)symbolfilehomemiaoctesttestdebug。symLoadnewsymboltablefromhomemiaoctesttestdebug。sym?(yorn)yReadingsymbolsfromhomemiaoctesttestdebug。sym。。。(gdb)where00x000055d8d93bc178infunc()attestdebug。c:810x000055d8d93bc1b3inmain()attestdebug。c:14(gdb)四参考网站〔https:blog。csdn。netbluebubblearticledetails10407217〕(https:blog。csdn。netbluebubblearticledetails10407217)

六年级童话寓言作文夏天的童话太阳像打了鸡血似的,一大波一大波地吐着阳光。知了躲在树叶下不断喊着:热呀!热呀!小狗儿把舌头吐得长又长。青蛙在白天都待在水里,只在晚上探出头叫几声。没脱完毛的小兔子更是不……美丽的春天E度网专稿未经允许不得转载ldquo;春色满园关不住,一枝红杏出墙来。rdquo;这句诗是叶绍翁笔下春天的景色。现在和我一起去看一看春天的景色吧!春天来了,小树发出……RPA机器人赋能电商自动化助力品牌流量提升疫情冲击下,日用刚需类产品市场呈现爆炸性增长,消费行为和工作方式也受到影响,部分品类今年比去年同期流量增加30,有的涨幅甚至超过40。以往的人工处理数据影响了运营决策的及……回忆那片枫叶作文900字九月的天,有点清凉。天空中似乎也多了一丝忧愁,让我的脚步渐渐地慢了下来。一个人徘徊在小径上,两排枫树在我的两侧,像贴身保镖。随处一望,全是树叶。不满大地的枫叶,让我不知在哪落脚……拥有是一种幸福拥有是一种幸福我有一个室友,她相貌平平,戴着一副600多度的眼镜(不是周笔畅那种的),每次看她的眼镜,镜片一个圈一圈的。有一天,她很认真地对我说了一句话:廖芸,我觉得你真幸福,……蜜蜂的告别600字清晨,明媚的春光覆盖大地,一朵娇如可人的花儿张开双臂,释放积蓄了一个寒冬的花香,花儿深深地呼吸着带着青草味的空气,露出如孩子般童稚的笑容。不料,花香吸引来了一位陌生的客人蜜蜂。……网络游戏的危害作文600字网络是什么?又是如何接近我们的呢?网络游戏的危害有哪些呢?网络游戏的危害作文600字1网络游戏对于我们生活中,有一些人会在网络游戏上而入迷。网络游戏有好有坏,一种就……横扫推特登顶榜首特朗普携新社交软件强势回归就在马斯克以440亿美元收购Twitter的这一周,特朗普集团旗下的新社交媒体平台Truthsocial在苹果商店的免费应用排行榜上冲到了榜首。成功登顶苹果商店应用榜首,……出门在外,你需要知道哪些有关酒店的潜规则?1:住酒店,不要选头尾房。2:隔音不好是通病,几星级都一样。3:酒店的塑料拖鞋不要穿,很多人的脚气就是这么得来的。4:一个人住也定标间,拒绝大床以及一张床的,……什么叫中台?中台这一概念,最近在国内大热。阿里、腾讯、百度、京东、美团、滴滴等一众互联网巨头,从去年到今年,接连开始组织架构的调整,意图建设中台。也有很多人认为,中台并不是解决一切问题的法……初中感恩父母的作文400字集合六篇在日常学习、工作和生活中,大家都不可避免地要接触到作文吧,借助作文人们可以实现文化交流的目的。相信很多朋友都对写作文感到非常苦恼吧,下面是小编为大家整理的初中感恩父母的作文40……你有在移动联通电信被乱收费的现象吗?有,我一个老人被乱收费几次。第一次:有一次我发现,我的手机收费不对了,老年机多收了八十多元。我给联通打电话,他们啰啰嗦嗦不想给我解决。我投诉了他们。最后才退给我八十多元钱……
转角遇到miss张作文如果把学习生涯比喻成一条条小路,那么从小学到初中的过渡应该是个转角吧!题记告别了小学六年,迎接我们的是三年崭新的初中生活。又会遇到什么样的老师?我思索着。当我……感恩父母ldquo;妈妈mdash;mdash;,妈妈mdash;mdash;rdquo;我在梦中被惊醒了,原来这只是一场梦。ldquo;妈妈,我好想您啊!您什么时候回来?rdquo;……快乐的端午节作文200字【篇一:快乐的端午节作文100字】早晨醒来,我揉了揉眼睛,忽然闻到了淡淡的香气。我随着香气来到了餐桌前。啊!我看到了许多粽子!蜜枣粽子,豆豆粽子,咸肉粽子,鸡蛋和咸鸭蛋,……宇宙是一个巨大的生命体前面写到关于地球是个生命体的简单推理,也就是一些自然现象,就和我们的身体一样,体内细胞不断进行新陈代谢,新的细胞不断更替老的细胞,地球经过一系列板块运动、自然吸水、并且自转来进……小黑俗话说:ldquo;萝卜青菜,各有所爱。rdquo;像我们这个年龄的,更是有的爱小白兔,有的爱小花猫,还有的爱小鸟,可我喜欢的是我家的小狗mdash;mdash;黑子。黑……游故宫作文600字三篇故宫是我国重要的文化遗产,而游故宫又是一种怎样的体验呢?下面是小编为大家整理的一些关于游故宫的作文,欢迎阅读。游故宫作文(一)来北京,一定要去两个地方:故宫、长城。我们今……4077万元,阿里云中标,北京亦庄区域治理融合管理平台项目1、项目名称:北京亦庄智能城市研究院集团有限公司区域治理融合管理平台建设与运营服务项目2、采购单位:北京亦庄智能城市研究院集团有限公司3、中标单位:阿里云计算有限公……狐狸的故事作文300字从前,一个人很想做一件狐狸皮大衣。这一天,他想到到一个办法,找条铁链把大黄狗栓了起来。大黄狗急得天天汪汪直叫,吵得主人心神不宁。突然,有一只狐狸听到了大黄狗哭天呛地地叫声……中国新能源真正的龙头三大新能源企业,未来可期!(附名单)新能源的含义新能源(NE)又称非常规能源。是指传统能源之外的各种能源形式。指刚开始开发利用或正在积极研究、有待推广的能源,如太阳能、地热能、风能、海洋能、生物质能和核聚变……夏雨二年级作文五篇导语:夏天的雨,来得快,走得也快。渐渐地,雨停了,云散了,太阳公公又露出了笑脸,大地又亮起来了。下面小编整理了夏雨二年级作文五篇,欢迎参考借鉴!篇一:夏雨今天下午,……MANNER全国10城200新店齐开Seesaw完成新一轮数新消费要闻MANNER全国10城200新店齐开3月1日,MannerCoffee官微发布公告,全国10城200新店齐开,覆盖北上深、重庆、武汉等高线城市。消费者于3……假如苹果公司突然中断支付功能,我们微信支付宝里面的钱怎么使用首先你要理解的是,你支付钱的方式是APP,苹果能中断的是自己支付方式,不是微信支付宝。而且,除了苹果以外,安卓系统手机还是鸿蒙满足不了你的需求么愿意用苹果就证明你的钱不怕……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网