【技术实现步骤摘要】
一种公共数据的多线程访问轨迹的分析方法
[0001]本专利技术属于计算机
,具体涉及一种公共数据的多线程访问轨迹的分析方法。
技术介绍
[0002]在多线程程序中,多个线程并发访问公共变量是一种常见现象。当多个线程对公共变量进行访问出现错误时,现有的增加断点、单步交互式等程序调试方式主要存在以下问题:一是错误复现困难,由于操作系统分配CPU给某个线程的时机和顺序具有不确定性,某个错误可能需要反复交互式调试才能再次出现,增加了调试分析的难度;二是错误定位费时,错误复现后在单步交互式调试模式下,需要程序员记忆错误时多个线程访问变量前后的历史场景,再分析每个线程的调用栈等情况,过程复杂费时;三是日志形式不直观,日志中记录了程序的执行过程,然而日志记录的内容十分有限,往往缺乏线程调用栈、相关变量等有用信息,此外,通过日志分析需要反复查看文本日志,这些都增加了程序调试分析的难度。
技术实现思路
[0003]有鉴于此,本专利技术提供了一种公共数据的多线程访问轨迹的分析方法,实现了基于二进制代码调试过程中根据需要记录 ...
【技术保护点】
【技术特征摘要】
1.一种公共数据的多线程访问轨迹的分析方法,其特征在于,具体包括以下步骤:步骤1、确定源代码中与目标变量相关的所有变量为目标相关变量,在所有目标相关变量处增加语义标注;步骤2、在编译器编译所述源代码的过程中,根据语义标注识别目标相关变量后获取针对目标相关变量的所有写操作代码,在写操作代码的前后均增加自定义断点语句生成二进制代码;所述自定义断点语句包括特定opcode、变量ID及源代码行号,特定opcode为设定的无效opcode;步骤3、使用调试器调试所述二进制代码,当调试器接收到InVaLidOpCode异常消息后,设置处理器的异常处理标志为异常,若异常消息相关无效opcode为自定义断点语句中所的特定opcode,则执行步骤4;否则执行步骤5;当处理器抛出异常时,执行步骤6;步骤4、根据自定义断点语句记录信息实体的信息及信息实体间的对应关系形成断点历史数据,所述信息实体包括断点指令地址A、变量ID、源代码行号、线程、栈顶函数及变量;步骤5、设置处理器的异常处理标志为继续执行,调试器计算断点指令地址A之后跳过自定义断点语句的长度的地址位置B,若地址位置B存在则将指令地址B作为当前指令地址执行步骤3;若指令地址B不存在或处理器抛出异常,则执行步骤6;步骤6、令迭代执行次数自加1,若迭代执行次数小于或等于阈值则执行步骤3,否则结束调试执行步骤7;若处理器已抛出异常则结束调试执行步骤7;步骤7、根据断点历史数据完成对变量及线程的分析。2.根据权利要求1所述的分析方法,其特征在于,所述步骤1中的所述目标变量采用源代码文件全路径、源代码行号及变量名描述。3.根据权利要求1所述的分析方法,其特征在于,所述步骤1中确定源代码中与目标变量相关的所有变量为目标相关变量的方式为:采用污点分析方法确定与目标变量相关的目标相关变量。4....
【专利技术属性】
技术研发人员:杜凯,温研,
申请(专利权)人:北京麟卓信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。