CN106407110A - 一种基于IC TraceBuffer的调试方法 - Google Patents

一种基于IC TraceBuffer的调试方法 Download PDF

Info

Publication number
CN106407110A
CN106407110A CN201610807017.7A CN201610807017A CN106407110A CN 106407110 A CN106407110 A CN 106407110A CN 201610807017 A CN201610807017 A CN 201610807017A CN 106407110 A CN106407110 A CN 106407110A
Authority
CN
China
Prior art keywords
tracebuffer
instruction
parsing
data
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610807017.7A
Other languages
English (en)
Inventor
陈元丰
谢韶波
罗青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chipsea Technologies Shenzhen Co Ltd
Original Assignee
Chipsea Technologies Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chipsea Technologies Shenzhen Co Ltd filed Critical Chipsea Technologies Shenzhen Co Ltd
Priority to CN201610807017.7A priority Critical patent/CN106407110A/zh
Publication of CN106407110A publication Critical patent/CN106407110A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于IC TraceBuffer的调试方法,该方法通过解析TraceBuffer数据模块解析TraceBuffer中内容为对应的指令,并使用显示模块将图形界面显示出来并依赖调试信息进而找到出错程序附近的行。本发明通过解析TraceBuffer数据模块结合显示模块,能够在传统调试器难以找出问题的情况下尽可能快的找出bugs,提高调试效率,缩短调试时间。

Description

一种基于IC TraceBuffer的调试方法
技术领域
本发明属于软件调试的技术领域,特别涉及一种基于IC TraceBuffer的调试系统及方法。
背景技术
IC TraceBuffer就是IC内部一块很小的Memory,主要是用来存放IC执行过的痕迹,即被执行过的指令,但是由于Memory很小,所以保存的指令数据有效,通常保存最新执行的几条指令,早期的执行指令不断被覆盖的调试方法及系统。
目前各种各样的应用程序应有尽有,这些应用程序基本上都是使用开发语言和一个调试器来进行开发、调试,但是调试器一般都是集成到集成开发环境(IDE)中,因此大部分开发者都是使用IDE来进行开发应用程序,但是不管是高阶开发语言,如C、C++、Java等,还是低阶开发语言,如汇编语言PIC、6502汇编等,对于开发者来说,编写完代码执行过程上遇到问题,那么必须依靠调试器来进行调试、跟踪并找出问题,进而解决问题,最后才能发布,大部分的应用程序在遇到bugs的时候基本上都可以通过调试器即可比较容易地找出问题,但是针对使用汇编编写的嵌入式大代码量程序,在遇到问题的时候查找就不那么容易,特别是针对这样场景下的应用程序:程序在运行的过程中莫名其妙就复位或者跑飞了,这种情况下依赖调试器查找起来也非常棘手,即使有Call Stack,调试器也无法知道复位之前执行了哪些指令,因为最有可能出现问题的地方是复位之前执行的那几条指令导致或者跟它们相关。
发明内容
基于此,因此本发明的首要目地是提供一种基于IC TraceBuffer的调试方法,该方法能够在传统调试器难以找出问题的情况下尽可能快的找出bugs,提高调试效率,缩短调试时间。
为实现上述目的,本发明的技术方案为:
一种基于IC TraceBuffer的调试方法,其特征在于该方法通过解析TraceBuffer数据模块解析TraceBuffer中内容为对应的汇编指令,并使用显示模块将图形界面显示出来并依赖调试信息进而找到出错程序附近的行。
进一步,所述解析TraceBuffer数据模块首先连接设备,然后获取IC TraceBuffer内容,并对获取的TraceBuffer数据进行分析,得到对应的指令,如:movwf 0x100,最后结合调试信息,得到源代码中真正的指令,如:movfw TimerID。
进一步,所述方法通过显示模块把解析TraceBuffer数据模块中获取到的指令信息用图形界面显示出来,方便用户查看,并且允许用户在显示指令的界面上双击对应的指令信息行能快速定位到该指令对应的源代码行中。
进一步,该方法具体的实现步骤是:
101、当调试器中断下来,解析TraceBuffer数据模块连接硬件设备;
所述调试器中断下来,是指调试器执行Step Out、Step Into、Step Over指令停下来。
102、获取IC TraceBuffer数据,针对数据进行分析,获取每一条指令对应的信息,
所述信息包含:地址、指令机器码、指令周期、指令类型(Read or Write orReadWrite)。
103、解析TraceBuffer数据模块结合所述信息把指令Machine Code转换为指令OPCode,如把:0x12 0x23转换为movwf 0x03;
104、解析TraceBuffer数据模块结合调试的信息再把指令OPCode转换为真正的源码,如:movwf TimerID;
105、显示模块负责把解析TraceBuffer数据模块解析获取的指令用图形界面的方式给显示出来。
解析TraceBuffer数据模块将数据进行分析并转换指令,能够保证结合调试信息及时、准确地找到对应的指令,再把解析后的指令信息显示在图形界面上,通过图形界面用户可以看到当前IC的执行痕迹,双击用户图形界面中List控件中的任何一行该模块会结合调试信息和指令信息定位到源码对应的行号上,协助用户定位问题。
本发明所实现的调试方法,通过解析TraceBuffer数据模块结合显示模块,能够在传统调试器难以找出问题的情况下尽可能快的找出bugs,提高调试效率,缩短调试时间。
附图说明
图1是本发明所实施的调试控制流程图。
图2是本发明所实施的显示控制流程图。
图3是本发明所实施的显示界面的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1所示,为本发明所实施的基于IC TraceBuffer的调试方法控制流程图,图中所示,解析TraceBuffer数据模块当调试器中断下来(即执行Step Out、Step Into、Step Over停下来后),通过连接上硬件设备,获取IC TraceBuffer数据,针对数据进行分析,获取每一条指令对应的信息,这些信息包含:地址、指令机器码、指令周期、指令类型(Read or Writeor ReadWrite),然后结合指令信息把指令Machine Code转换为指令OPCode,如把:0x120x23转换为movwf 0x03,最后结合调试信息在把movwf 0x03转换为真正的源码,如:movwfTimerID。
具体步骤为:
S101、调试器中断后,解析TraceBuffer数据模块连接硬件设备。
S102、连接成功后,获取TraceBuffer数据集。数据集包含:地址、指令机器码、指令周期、指令类型(Read or Write or ReadWrite)。
S103、从TraceBuffer数据集中提取指令数据。
S104、提取成功后,分析指令数据,获取该条指令对应的Address、Cycle、Inse、Type、Code Bytes、Instruction等数据。
在该步骤中,获取完该条指令对应的数据后,结合指令信息把指令Machine Code转换为指令OPCode。
S105、结合调试信息,将上述数据转换为源码中对应的指令。
S106、保存S105步骤获得的指令信息到指令数据容器中。
S107、重复S103-S106步骤,直至所有的数据都转换保存完毕。
如图2所示,显示指令模块负责把(1)模块中解析获取的指令用图形界面的方式给显示出来,方便用户查看指令,通过图形界面用户可以看到当前IC指令的执行痕迹,双击用户图形界面中List控件中的任何一行该模块会结合调试信息和指令信息定位到源码对应的行号上,协助用户定位问题。其具体的步骤为:
S201、初始化TraceBuffer指令视图;
S202、获取指令保存解析后的指令数据容器;
S203、从上述容器中依次提取指令数据;
S204、读取成功后按照显示格式将指令数据进行格式化;
S205、将格式化的指令内容插入到图形控件中;然后重复S203-S205步骤,直至提前容器中的所有数据;
S206、显示TraceBuffer指令视图。
再参见图3所示,#为显示每条指令的流水号,Address为显示每条指令的起始地址,Cycles为显示执行每条指令的周期,Code Bytes为显示每条指令对应的机器码,Instruction为显示每条指令,Type为显示每条指令类型,如Read、Write、ReadWrite。
当用户嵌入式程序莫名其妙Reset,很难定位出问题的时候,此时用户可以依靠本专利提到的技术来协助定位问题,这里假如获取当时的TraceBuffer数据显示出来如上图所示,那么出错前IC执行的最近指令有以上4条,当然依靠TraceBuffer的大小,如果TraceBuffer再大,这里显示的内容会更多,此时用户在第二行位置上双击,该模块就会结合指令信息和调试信息定位到源代码行上如:15MOVFW TimerID(15是行号),但是这是针对汇编源文件的情况,如果针对C源文件,由于一条C源文件可能对应多行汇编程序,因此可能双击上面多行均对应到同一行C源文件中,这样均都可以协助用户定位并找出难于发现的问题。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于IC TraceBuffer的调试方法,其特征在于该方法通过解析TraceBuffer数据模块解析TraceBuffer中内容为对应的指令,并使用显示模块将图形界面显示出来并依赖调试信息进而找到出错程序附近的行。
2.如权利要求1所述的基于IC TraceBuffer的调试方法,其特征在于所述解析TraceBuffer数据模块首先连接设备,然后获取IC TraceBuffer内容,并对获取的TraceBuffer数据进行分析,得到对应的指令,最后结合调试信息,得到源代码中真正的指令。
3.如权利要求1所述的基于IC TraceBuffer的调试方法,其特征在于所述方法通过显示模块把解析TraceBuffer数据模块中获取到的指令信息用图形界面显示出来,并且允许用户在显示指令的界面上双击对应的指令信息行能快速定位到该指令对应的源代码行中。
4.如权利要求1所述的基于IC TraceBuffer的调试方法,其特征在于该方法具体的实现步骤是:
101、当调试器中断下来,解析TraceBuffer数据模块连接硬件设备;
102、获取IC TraceBuffer数据,针对数据进行分析,获取每一条指令对应的信息;
103、解析TraceBuffer数据模块结合所述信息把指令Machine Code转换为指令OPCode;
104、解析TraceBuffer数据模块结合调试的信息再把指令OPCode转换为真正的源码;
105、显示模块负责把解析TraceBuffer数据模块解析获取的指令用图形界面的方式给显示出来。
5.如权利要求4所述的基于IC TraceBuffer的调试方法,其特征在于所述101步骤中,调试器中断下来,是指调试器执行Step Out、Step Into、Step Over指令停下来。
6.如权利要求4所述的基于IC TraceBuffer的调试方法,其特征在于所述102步骤中,所示信息包含:地址、指令机器码、指令周期、指令类型。
CN201610807017.7A 2016-09-06 2016-09-06 一种基于IC TraceBuffer的调试方法 Pending CN106407110A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610807017.7A CN106407110A (zh) 2016-09-06 2016-09-06 一种基于IC TraceBuffer的调试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610807017.7A CN106407110A (zh) 2016-09-06 2016-09-06 一种基于IC TraceBuffer的调试方法

Publications (1)

Publication Number Publication Date
CN106407110A true CN106407110A (zh) 2017-02-15

Family

ID=57999464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610807017.7A Pending CN106407110A (zh) 2016-09-06 2016-09-06 一种基于IC TraceBuffer的调试方法

Country Status (1)

Country Link
CN (1) CN106407110A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112711523A (zh) * 2019-10-24 2021-04-27 珠海格力电器股份有限公司 程序问题定位方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131039A1 (en) * 2002-01-10 2003-07-10 International Business Machines Corporation System, method, and computer program product for preserving trace data after partition crash in logically partitioned systems
CN101551928A (zh) * 2009-05-14 2009-10-07 浪潮齐鲁软件产业有限公司 一种金融税控收款机嵌入程序的断点调试方法
CN103631739A (zh) * 2012-08-28 2014-03-12 华为技术有限公司 嵌入式系统的定位分析方法和嵌入式系统
CN104102567A (zh) * 2014-07-17 2014-10-15 深圳市芯海科技有限公司 一种ic触摸芯片调试及模拟的方法及装置
CN106100919A (zh) * 2016-05-27 2016-11-09 中国航空工业集团公司沈阳飞机设计研究所 一种fc总线测试系统及fc总线测试方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131039A1 (en) * 2002-01-10 2003-07-10 International Business Machines Corporation System, method, and computer program product for preserving trace data after partition crash in logically partitioned systems
CN101551928A (zh) * 2009-05-14 2009-10-07 浪潮齐鲁软件产业有限公司 一种金融税控收款机嵌入程序的断点调试方法
CN103631739A (zh) * 2012-08-28 2014-03-12 华为技术有限公司 嵌入式系统的定位分析方法和嵌入式系统
CN104102567A (zh) * 2014-07-17 2014-10-15 深圳市芯海科技有限公司 一种ic触摸芯片调试及模拟的方法及装置
CN106100919A (zh) * 2016-05-27 2016-11-09 中国航空工业集团公司沈阳飞机设计研究所 一种fc总线测试系统及fc总线测试方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112711523A (zh) * 2019-10-24 2021-04-27 珠海格力电器股份有限公司 程序问题定位方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US11226886B2 (en) Programmatic container monitoring
US8756572B2 (en) Debugger-set identifying breakpoints after coroutine yield points
US8387021B2 (en) Symbolic runtime checking of quantified contracts
US6161216A (en) Source code debugging tool
CN101587455B (zh) 一种用于vxWorks操作系统检查内存泄漏的方法
US8745597B2 (en) Providing programming support to debuggers
CN106557413A (zh) 基于代码覆盖率获取测试用例的方法和设备
US8719797B2 (en) System and method for debugging dynamically generated code of an application
EP2017983A1 (en) A debugging method and apparatus for performing telecom class service development based on model driven
JP2005530238A (ja) 動的モデル/コード結合を提供するシステム、方法、および媒体
CN104731566B (zh) 集成开发环境测试装置、方法及系统
US20090125888A1 (en) Expression-level debugging without format changes
US20180107585A1 (en) Using edit and continue to dynamically set and unset optimizations in source code while debugging
Kothari et al. Deriving state machines from TinyOS programs using symbolic execution
US20140229921A1 (en) Method and System for Computer Assisted Hot-Tracing Mechanism
CN107203535B (zh) 信息查询方法及装置
CN101639805A (zh) 用于在程序调试中跟踪变量的方法和设备
CN106021101A (zh) 对移动终端进行测试的方法及装置
US10713145B2 (en) Automated debugging with combined static and dynamic analysis
US9552277B2 (en) Synchronized java debugger
US20040168157A1 (en) System and method for creating a process invocation tree
CN106407110A (zh) 一种基于IC TraceBuffer的调试方法
CN106919374B (zh) 一种脚本生成方法和装置
CN105630664A (zh) 一种反向调试方法、装置及调试器
CN104899042A (zh) 一种嵌入式机器视觉检测程序开发方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170215