CN108647144A - 仿真器及代码执行异常断点实现方法 - Google Patents

仿真器及代码执行异常断点实现方法 Download PDF

Info

Publication number
CN108647144A
CN108647144A CN201810441914.XA CN201810441914A CN108647144A CN 108647144 A CN108647144 A CN 108647144A CN 201810441914 A CN201810441914 A CN 201810441914A CN 108647144 A CN108647144 A CN 108647144A
Authority
CN
China
Prior art keywords
address
code
module
breakpoint
debugging
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
CN201810441914.XA
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.)
Shanghai Information Network Co Ltd
Original Assignee
Shanghai Information Network 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 Shanghai Information Network Co Ltd filed Critical Shanghai Information Network Co Ltd
Priority to CN201810441914.XA priority Critical patent/CN108647144A/zh
Publication of CN108647144A publication Critical patent/CN108647144A/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/3644Software debugging by instrumenting at runtime
    • 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/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements

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

本发明公开了一种仿真器,地址比较模块通过一组地址线与处理器核相连接,通过断点触发信号线与调试模块相连接,通过一组数据读取线与断点地址范围寄存器相连接;断点地址范围寄存器通过一组数据写入线与调试模块相连接,调试模块通过调试通道与安装在用户电脑上的集成开发环境模块相连接;地址比较模块比对和判断所述下一条要执行的代码语句地址是否在正常用户代码地址范围内,如果不在正常用户代码地址范围内,则向调试模块发出触发断点信号。本发明还公开了一种代码执行异常断点实现方法。本发明在出现代码执行异常时,能够立即触发断点功能。

Description

仿真器及代码执行异常断点实现方法
技术领域
本发明涉及处理器芯片调试领域,特别是涉及一种仿真器。本发明还涉及一种代码执行异常断点实现方法。
背景技术
处理器芯片内有用户开发的用户程序,在用户程序的编写和调试中,所使用的工具一般是仿真器。仿真器内使用包含产品处理器芯片各项功能的仿真芯片,用于模拟产品处理器芯片的工作行为,仿真芯片与仿真器其它部件(存放用户程序的程序存储器、存放数据的数据存储器,以及用户电脑上的集成开发环境等)配合实现用户程序的仿真运行和各项调试功能。
用户程序调试过程中经常会遇到代码执行过程中出现代码执行异常,也就是代码跑飞,执行到了非预期的代码地址空间的情况,用户非常希望能有调试手段准确地寻找到执行哪一句代码时,触发了非预期的代码执行异常,以及跑飞后的代码地址,以便进一步分析和调试。
使用现有的仿真器,调试中出现上述问题时,只能采用不断设置代码断点,配合使用单步来逐步逼近寻找定位在执行了哪一句代码时,触发了非预期的代码执行异常,非常麻烦、调试效率低下。同时,如果代码执行异常跑飞的情况不是每次执行代码时都稳定发生的,或者触发代码异常跑飞的代码语句有多条时,采用上述调试方法将更加困难。
发明内容
本发明要解决的技术问题是提供一种仿真器,在出现代码执行异常时,能够立即触发断点功能;为此,本发明还要提供一种代码执行异常断点实现方法。
为解决上述技术问题,本发明的仿真器,包括:地址比较模块、处理器核、断点地址范围寄存器、调试模块和集成开发环境模块;所述地址比较模块通过一组地址线与处理器核相连接,通过断点触发信号线与调试模块相连接,通过一组数据读取线与断点地址范围寄存器相连接;所述断点地址范围寄存器通过一组数据写入线与调试模块相连接,所述调试模块通过调试通道与安装在用户电脑上的集成开发环境模块相连接;
所述断点地址范围寄存器中存放着用户设置的正常用户代码地址范围数据,用户程序代码全速执行时,所述地址比较模块实时获取来自处理器核的取下一条要执行的代码语句时的代码语句地址信息,通过数据读取线从所述断点地址范围寄存器中读取正常用户代码地址范围数据,并比对和判断所述下一条要执行的代码语句地址是否在所述正常用户代码地址范围内,如果在正常用户代码地址范围内,则不向调试模块发出触发断点信号;如果不在正常用户代码地址范围内,则马上向调试模块发出触发断点信号;所述调试模块接收到触发断点信号后,马上停止执行用户程序,并把停止执行时的用户程序地址通过调试通道发送给集成开发环境模块显示出来。
所述仿真器采用的另一种方案是,包括:地址比较模块、处理器核、断点地址范围寄存器、调试模块和用户电脑;所述地址比较模块通过一组地址线与处理器核相连接,通过断点触发信号线与调试模块相连接,通过一组数据读取线与断点地址范围寄存器相连接;所述断点地址范围寄存器通过一组数据写入线与调试模块相连接,所述调试模块通过调试通道与用户电脑相连接。
所述代码执行异常断点实现方法,是采用如下技术方案实现的:用户程序代码全速执行时,实时获取来自处理器核的取下一条要执行的代码语句时的代码语句地址信息,并将其与用户设置的正常用户代码地址范围数据进行比对,判断所述下一条要执行的代码语句地址是否在正常用户代码地址范围内;如果在正常用户代码地址范围内,则不发出触发断点信号;如果不在正常用户代码地址范围内,则发出触发断点信号;调试模块接收到触发断点信号后,马上停止执行用户程序,并把停止执行时的用户程序地址通过调试通道发送给集成开发环境软件,在用户电脑上显示出来。
由于采用本发明的仿真器和方法,能够在用户程序代码执行过程中,出现取代码的地址超出了指定地址范围时,立即触发断点功能,用户程序立即停止执行,且程序执行地址指针停止在触发代码执行异常跑飞前所执行的用户程序语句地址上,并通过调试界面显示给用户查看。这样,极大地方便了用户调试、定位代码执行异常错误,提高了代码开发和调试的效率。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明:
图1是所述仿真器一实施例的结构示意图。
具体实施方式
如图1所示,所述仿真器1,在下面的实施例中包括:地址比较模块2、处理器核6、断点地址范围寄存器3、调试模块4和集成开发环境模块5。所述地址比较模块2通过一组地址线11与处理器核6相连接,通过断点触发信号线7与调试模块4相连接,通过一组数据读取线9与断点地址范围寄存器3相连接。所述断点地址范围寄存器3通过一组数据写入线10与调试模块4相连接。调试模块4通过调试通道8与用户电脑上的集成开发环境模块5相连接。
不执行用户程序代码,处于调试状态时,用户在所述集成开发环境模块5上通过调试通道8向调试模块4下发需要设置的正常用户代码地址范围数据,所述调试模块4通过数据写入线10把所述正常用户代码地址范围数据写入到断点地址范围寄存器3中。此时,所述断点地址范围寄存器3中存放着用户设置的正常用户代码地址范围数据。
用户程序代码开始全速执行,所述地址比较模块2通过地址线11实时获取来自处理器核6的取下一条要执行的代码语句时的代码语句地址信息,通过数据读取线9从所述断点地址范围寄存器3中读取正常用户代码地址范围数据,并比对和判断所述下一条要执行的代码语句地址是否在所述正常用户代码地址范围内。如果在正常用户代码地址范围内,则不通过断点触发信号线7向调试模块4发出触发断点信号;如果不在正常用户代码地址范围内,则马上通过断点触发信号线7向调试模块4发出触发断点信号。所述调试模块4接收到触发断点信号后,马上停止执行用户程序,并把停止执行时的用户程序地址通过调试通道8发送给集成开发环境模块5显示出来。
这样所实现的仿真器1就能不断地实时采集、比较下一条要执行的代码语句地址是否在预设的正常地址范围内,一旦发现马上要出现代码跑飞的情况就会触发断点,立即停止代码执行,由于是在取下一条代码地址时发现的代码地址异常并触发了断点停止代码执行,集成开发环境模块5上显示指向的就是触发断点时当前执行的代码语句,也就是将会触发代码执行异常跑飞前所执行的用户程序语句。
同时,采用本发明的仿真器1,如果代码执行异常跑飞的情况不是每次执行代码时都稳定发生的,也能在发生时停止在触发异常跑飞的代码语句上。并且,在触发代码异常跑飞的代码语句有多条时,都能停止在各条触发异常跑飞的代码语句上。
所述地址比较模块2、断点地址范围寄存器3和调试模块4都可使用FPGA(Field-Programmable Gate Array,即现场可编程门阵列)中的逻辑资源和寄存器资源配合逻辑设计实现。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

Claims (7)

1.一种仿真器,其特征在于,包括:地址比较模块、处理器核、断点地址范围寄存器、调试模块和集成开发环境模块;所述地址比较模块通过一组地址线与处理器核相连接,通过断点触发信号线与调试模块相连接,通过一组数据读取线与断点地址范围寄存器相连接;所述断点地址范围寄存器通过一组数据写入线与调试模块相连接,所述调试模块通过调试通道与安装在用户电脑上的集成开发环境模块相连接;
所述断点地址范围寄存器中存放着用户设置的正常用户代码地址范围数据,用户程序代码全速执行时,所述地址比较模块实时获取来自处理器核的取下一条要执行的代码语句时的代码语句地址信息,通过数据读取线从所述断点地址范围寄存器中读取正常用户代码地址范围数据,并比对和判断所述下一条要执行的代码语句地址是否在所述正常用户代码地址范围内,如果在正常用户代码地址范围内,则不向调试模块发出触发断点信号,如果不在正常用户代码地址范围内,则向调试模块发出触发断点信号。
2.如权利要求1所述的仿真器,其特征在于:所述调试模块接收到触发断点信号后,停止执行用户程序,并把停止执行时的用户程序地址发送给集成开发环境模块,在用户电脑上显示出来。
3.如权利要求1或2所述的仿真器,其特征在于:所述集成开发环境模块通过调试通道向调试模块下发需要设置的正常用户代码地址范围数据,所述调试模块通过数据写入线把正常用户代码地址范围数据写入到断点地址范围寄存器中。
4.一种仿真器,其特征在于,包括:地址比较模块、处理器核、断点地址范围寄存器、调试模块和用户电脑;所述地址比较模块通过一组地址线与处理器核相连接,通过断点触发信号线与调试模块相连接,通过一组数据读取线与断点地址范围寄存器相连接;所述断点地址范围寄存器通过一组数据写入线与调试模块相连接,所述调试模块通过调试通道与用户电脑相连接。
5.如权利要求4所述的仿真器,其特征在于:所述用户电脑上安装有集成开发环境模块,所述调试模块通过调试通道与安装在用户电脑上的集成开发环境模块相连接。
6.如权利要求4所述的仿真器,其特征在于:所述地址比较模块、断点地址范围寄存器和调试模块采用FPGA构成。
7.一种代码执行异常断点实现方法,其特征在于:用户程序代码全速执行时,实时获取来自处理器核的取下一条要执行的代码语句时的代码语句地址信息,并将其与用户设置的正常用户代码地址范围数据进行比对,判断所述下一条要执行的代码语句地址是否在正常用户代码地址范围内;如果在正常用户代码地址范围内,则不发出触发断点信号;如果不在正常用户代码地址范围内,则发出触发断点信号;调试模块接收到触发断点信号后,马上停止执行用户程序,并把停止执行时的用户程序地址通过调试通道发送给集成开发环境软件,在用户电脑上显示出来。
CN201810441914.XA 2018-05-10 2018-05-10 仿真器及代码执行异常断点实现方法 Pending CN108647144A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810441914.XA CN108647144A (zh) 2018-05-10 2018-05-10 仿真器及代码执行异常断点实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810441914.XA CN108647144A (zh) 2018-05-10 2018-05-10 仿真器及代码执行异常断点实现方法

Publications (1)

Publication Number Publication Date
CN108647144A true CN108647144A (zh) 2018-10-12

Family

ID=63754059

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810441914.XA Pending CN108647144A (zh) 2018-05-10 2018-05-10 仿真器及代码执行异常断点实现方法

Country Status (1)

Country Link
CN (1) CN108647144A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109793A (zh) * 2019-05-30 2019-08-09 上海市信息网络有限公司 用于调测设备安检状态的仿真调试装置及仿真调试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838952A (en) * 1996-05-28 1998-11-17 Mitsubishi Electric Semiconductor Software Co., Ltd. Emulator apparatus to break running program when variable is read without being initialized
JP2002268916A (ja) * 2001-03-12 2002-09-20 Mitsubishi Electric Corp プログラム検証方法および装置
CN103207830A (zh) * 2012-01-13 2013-07-17 上海华虹集成电路有限责任公司 带有软件断点的仿真器
CN103279326A (zh) * 2009-12-23 2013-09-04 上海高性能集成电路设计中心 一种用于软件调试的微处理器数据流地址匹配自陷装置
CN207302034U (zh) * 2017-09-26 2018-05-01 上海市信息网络有限公司 处理器芯片仿真器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838952A (en) * 1996-05-28 1998-11-17 Mitsubishi Electric Semiconductor Software Co., Ltd. Emulator apparatus to break running program when variable is read without being initialized
JP2002268916A (ja) * 2001-03-12 2002-09-20 Mitsubishi Electric Corp プログラム検証方法および装置
CN103279326A (zh) * 2009-12-23 2013-09-04 上海高性能集成电路设计中心 一种用于软件调试的微处理器数据流地址匹配自陷装置
CN103207830A (zh) * 2012-01-13 2013-07-17 上海华虹集成电路有限责任公司 带有软件断点的仿真器
CN207302034U (zh) * 2017-09-26 2018-05-01 上海市信息网络有限公司 处理器芯片仿真器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109793A (zh) * 2019-05-30 2019-08-09 上海市信息网络有限公司 用于调测设备安检状态的仿真调试装置及仿真调试方法

Similar Documents

Publication Publication Date Title
CN110603528B (zh) 调试系统和方法
EP2891052B1 (en) Instruction insertion in state machine engines
US9507688B2 (en) Execution history tracing method
US6557119B1 (en) Microcomputer debug architecture and method
US8555234B2 (en) Verification of soft error resilience
US20210064512A1 (en) Selective memory tracing of program execution
EP3369015B1 (en) Methods and circuits for debugging circuit designs
US20070011492A1 (en) Generation of trace data
US6487683B1 (en) Microcomputer debug architecture and method
US6463553B1 (en) Microcomputer debug architecture and method
Schmidt et al. Checkpoint/restart and beyond: Resilient high performance computing with FPGAs
EP2668578A1 (en) Controlling generation of debug exceptions
US6175913B1 (en) Data processing unit with debug capabilities using a memory protection unit
US6502210B1 (en) Microcomputer debug architecture and method
CN102467446A (zh) 可设置程序指针值的处理器芯片仿真器
US6182208B1 (en) System for debugging (N) break points by dividing a computer program to (n+1) regions each contains no break point and using two registers to define the start and end addresses of each region
WO2013011356A1 (en) Method and apparatus for enabling an executed control flow path through computer program code to be determined
CN110457198A (zh) 调试信息输出方法、装置及存储介质
CN101329650B (zh) 智能卡仿真器
CN108647144A (zh) 仿真器及代码执行异常断点实现方法
CN106528414B (zh) 处理器芯片仿真器
CN208384556U (zh) 仿真器
EP1125200B1 (en) Maintaining object size information concurrent with data optimization for debugging
CN208384554U (zh) 仿真器
CN100481093C (zh) 验证目标系统的验证系统及其验证方法

Legal Events

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

Application publication date: 20181012