【技术实现步骤摘要】
一种程序调试方法及装置
本专利技术涉及计算机领域,尤其涉及一种程序调试方法及装置。
技术介绍
在嵌入式系统上开发软件,开发人员最大一部分时间都是花在调试过程中。软件调试可分为静态调试与动态调试两种,其中,静态调试可以通过输出寄存器的内容和在程序源码中插入打印语句来实现;动态调试可以通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为,一般程序语言和工具提供的调试功能有检查主存和寄存器;设置断点,即当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析程序此时的状态。通过以上所列的调试方式可以解决大部分程序调试问题,可以提高开发者的开发效率。 但是,对于软件中依赖硬件、随机性出现的死机,且死机时堆栈被破坏的问题可能就显得无能为力了,特别是针对需要长时间拷机才会出现的问题,用以上调试方式可能会费时费力并且得不到想要的结果。
技术实现思路
本专利技术实施例所要解决的技术问题是提供一种程序调试方法及装置,可以获取程序在异常退出之前的运行信息,可以根据该运行信息快速定位问题,提升开发效率。 为解决上述问题,本专利技术的技术方案为: 第一方面,本专利技术实施例提供了一种程序调试方法,包括: 在程序中的函数的入口处进行插桩,用以获得程序执行到函数的入口时函数的地址信息,记录该函数的地址信息于动态记录表中,保存动态记录表于预定存储区域; 在程序中的函数的出口处进行插桩,用以从动态记录表中删除该函数的地址信息,保存动态记录表于预定存储区域; 根据预定存储区域中的动态记录表生成程序运行信息。 具体的,函数的地址 ...
【技术保护点】
一种程序调试方法,其特征在于,包括:在程序中的函数的入口处进行插桩,用以获得所述程序执行到所述函数的入口时所述函数的地址信息,记录所述函数的地址信息于动态记录表中,保存所述动态记录表于预定存储区域;在所述程序中的函数的出口处进行插桩,用以从所述动态记录表中删除所述函数的地址信息,保存所述动态记录表于所述预定存储区域;根据所述预定存储区域中的动态记录表生成程序运行信息。
【技术特征摘要】
1.一种程序调试方法,其特征在于,包括: 在程序中的函数的入口处进行插桩,用以获得所述程序执行到所述函数的入口时所述函数的地址信息,记录所述函数的地址信息于动态记录表中,保存所述动态记录表于预定存储区域; 在所述程序中的函数的出口处进行插桩,用以从所述动态记录表中删除所述函数的地址信息,保存所述动态记录表于所述预定存储区域; 根据所述预定存储区域中的动态记录表生成程序运行信息。2.如权利要求1所述的方法,其特征在于,所述函数的地址信息包括所述函数的地址;所述根据所述预定存储区域中的动态记录表生成程序运行信息包括: 根据所述动态记录表和所述程序的符号表来得到导致所述程序在运行过程中出现异常的相关函数;所述符号表包括所述程序中全部函数和所述全部函数的地址。3.如权利要求1所述的方法,其特征在于,所述函数的地址信息包括所述函数的地址和所述函数被调用处的地址;所述根据所述预定存储区域中的动态记录表生成程序运行信息还包括: 根据所述动态记录表中记录的函数的地址和所述函数被调用处的地址来得到所述程序的调用路径。4.如权利要求1所述的方法,其特征在于,包括:当所述程序为多线程的程序时, 所述记录所述函数的地址信息于动态记录表中具体包括: 记录所述函数所属的线程的信息于动态记录表中; 记录所述函数的地址和所述函数被调用处的地址于动态记录表中; 所述从所述动态记录表中删除所述函数的地址信息具体包括: 将所述函数的地址从所述动态记录表中删除; 判断所述函数所属的线程是否结束;如果所述函数所属的线程结束,则将所述函数所属的线程的信息从所述动态记录表中删除。5.如权利要求1所述的方法,其特征在于,所述动态记录表为链表的形式;所述函数的地址信息为所述链表中的节点; 所述记录所述函数的地址信息于动态记录表中具体为将所述函数的地址信息添加到所述链表中; 所述从所述动态记录表中删除所述函数的地址信息具体为将所述函数的地址信息从所述链表中删除。6.如权利要求2所述的方法,其特征在于,还包括:当所述程序为单线程程序时,所述根据所述动态记录表和所述程序的符号表来得到导致所述程序在运行过程中出现异常的相关函数具体包括: 根据所述符号表得到所述动态记录表中最后被添加的函数的地址信息对应的函数;则定位所述最后被添加的函数的地址信息对应的函数为所述相关函数。7.如权利要求2所述的方法,其特征在于,还包括:当所述程序为多线程程序时,所述动态记录表还包括所述函数所属的线程的信息; 所述根据所述动态记录表和所述程序的符号表来得到导致所述程序在运行过程中出现异常的相关函数具体包括: 根据所述符号表得到所述动态记录表中各个线程的最后被添加的函数的地址信息对应的函数;则定位所述各个线程的最后被添加的函数的地址信息对应的函数为所述相关函数。8.如权利要求2所述的方法,其特征在于,在所述根据所述预定存储区域中的动态记录表和所述程序的符号表来定位导致所述程序在运行过程中出现异常的相关函数之前,还包括:通过反汇编所述程序的可执行文件来获取所述符号表。9.如权利要求5所述的方法,其特征在于,所述链表具体为复合型链表,所述复合型链表为线程链表和多个地址链表结合而形成,其中:同一线程中的函数的地址信息存储于同一个地址链表中,各个地址链表的表头存储各自对应的线程的信息,所述各个地址链表的表头形成线程链表。10.一种程序调试的装置,其特征在于,包括: 第一插桩模块,用于在程序中的函数的入口处进行插桩,用以获得所述程序执行到所述函数的入口时所述函数的地址信息,记录所...
【专利技术属性】
技术研发人员:高涛,
申请(专利权)人:深圳创维数字技术有限公司,深圳市创维软件有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。