CN108647144A - 仿真器及代码执行异常断点实现方法 - Google Patents
仿真器及代码执行异常断点实现方法 Download PDFInfo
- 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
Links
- 230000002159 abnormal effect Effects 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 title claims abstract description 11
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3644—Debugging of software by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3648—Debugging of software using additional hardware
- G06F11/3652—Debugging of software 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.一种代码执行异常断点实现方法,其特征在于:用户程序代码全速执行时,实时获取来自处理器核的取下一条要执行的代码语句时的代码语句地址信息,并将其与用户设置的正常用户代码地址范围数据进行比对,判断所述下一条要执行的代码语句地址是否在正常用户代码地址范围内;如果在正常用户代码地址范围内,则不发出触发断点信号;如果不在正常用户代码地址范围内,则发出触发断点信号;调试模块接收到触发断点信号后,马上停止执行用户程序,并把停止执行时的用户程序地址通过调试通道发送给集成开发环境软件,在用户电脑上显示出来。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109793A (zh) * | 2019-05-30 | 2019-08-09 | 上海市信息网络有限公司 | 用于调测设备安检状态的仿真调试装置及仿真调试方法 |
Citations (5)
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 | 上海市信息网络有限公司 | 处理器芯片仿真器 |
-
2018
- 2018-05-10 CN CN201810441914.XA patent/CN108647144A/zh active Pending
Patent Citations (5)
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)
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 | |
US8555234B2 (en) | Verification of soft error resilience | |
US6557119B1 (en) | Microcomputer debug architecture and method | |
US20210064512A1 (en) | Selective memory tracing of program execution | |
EP3369015B1 (en) | Methods and circuits for debugging circuit designs | |
US6487683B1 (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 | |
US6463553B1 (en) | Microcomputer debug architecture and method | |
US6175913B1 (en) | Data processing unit with debug capabilities using a memory protection unit | |
US6502210B1 (en) | Microcomputer debug architecture and method | |
CN110647472A (zh) | 崩溃信息统计方法、装置、计算机设备及存储介质 | |
CN102467446A (zh) | 可设置程序指针值的处理器芯片仿真器 | |
US20070011492A1 (en) | Generation of trace data | |
CN102708015A (zh) | 基于cpu不可屏蔽中断系统问题诊断的调试方法 | |
WO2013011356A1 (en) | Method and apparatus for enabling an executed control flow path through computer program code to be determined | |
CN106528414B (zh) | 处理器芯片仿真器 | |
CN101329650B (zh) | 智能卡仿真器 | |
CN108647144A (zh) | 仿真器及代码执行异常断点实现方法 | |
CN116775442A (zh) | 一种软件调试系统 | |
EP1125200B1 (en) | Maintaining object size information concurrent with data optimization for debugging | |
CN117707969B (zh) | 一种基于ARMv8的操作系统调测系统 | |
CN208384556U (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 |