RU2015152048A - Отладка машинного кода путем перехода от исполнения в собственном режиме к исполнению в интерпретируемом режиме - Google Patents
Отладка машинного кода путем перехода от исполнения в собственном режиме к исполнению в интерпретируемом режиме Download PDFInfo
- Publication number
- RU2015152048A RU2015152048A RU2015152048A RU2015152048A RU2015152048A RU 2015152048 A RU2015152048 A RU 2015152048A RU 2015152048 A RU2015152048 A RU 2015152048A RU 2015152048 A RU2015152048 A RU 2015152048A RU 2015152048 A RU2015152048 A RU 2015152048A
- Authority
- RU
- Russia
- Prior art keywords
- debugging
- program
- machine code
- bytecode
- mode
- Prior art date
Links
- 230000007704 transition Effects 0.000 title 1
- 230000006870 function Effects 0.000 claims 6
- 238000000034 method Methods 0.000 claims 5
- 230000004044 response Effects 0.000 claims 5
- 238000001514 detection method Methods 0.000 claims 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Claims (39)
1. Система, содержащая:
по меньшей мере один процессор вычислительного устройства;
память вычислительного устройства; и
байт-код (325), сформированный из исходного кода;
отладчик, содержащий по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
вставить по меньшей мере одну точку ухода в байт-код, сформированный из программного модуля, при компиляции программного модуля в режиме отладки, где упомянутая по меньшей мере одна точка ухода является местоположением в байт-коде, в котором отладка в собственном режиме может переходить к отладке в интерпретируемом режиме при условии, что выполняются некоторые условия ухода;
исполнить машинный код;
перейти от отладки машинного кода, представляющего программный модуль, к отладке интерпретируемого кода, представляющего программный модуль, в ответ на обнаружение в точке ухода, что выполнено условие ухода из отладки.
2. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
принять текущее состояние машинного кода, исполняющегося согласно отладчику;
создать экземпляр интерпретатора;
создать кадр стека интерпретатора для экземпляра интерпретатора; и
заполнить кадр стека интерпретатора для созданного экземпляра интерпретатора текущим состоянием машинного кода.
3. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
принять заданные местоположения ухода для программы, содержащие по меньшей мере одно из:
в начале функции, на обратной петле цикла, когда возвращается функция, когда возвращается вызов вспомогательной функции, когда возвращается вызов библиотеки или когда встречается оператор отладчика.
4. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
перейти к отладке интерпретируемого кода, представляющего программу, в ответ на прием операции управления исполнением.
5. Система по п. 1, дополнительно содержащая:
по меньшей мере один программный модуль, загруженный в память, побуждающий упомянутый по меньшей мере один процессор:
исполнить операцию отладки в собственном режиме, причем операция отладки модифицирует текущее значение переменной, собственный режим содержит отладку машинного кода, представляющего программу.
6. Способ, содержащий этапы, на которых:
формируют байт-код (325) из исходного кода;
с помощью процессора вычислительного устройства принимают по меньшей мере одну точку условия ухода из отладки для байт-кода, причем по меньшей мере одна точка ухода из отладки является местоположением в байт-коде, сформированном из исходного кода, в котором отладка переходит от отладки машинного кода к отладке интерпретируемого кода для программы в ответ на определение, что выполнено условие ухода из отладки;
инициируют сеанс отладки для программы;
формируют с помощью компилятора машинный код из байт-кода для отладки;
исполняют (256) сформированный машинный код согласно отладчику;
продолжают (260) исполнение байт-кода в интерпретируемом режиме согласно отладчику в ответ на определение, что выполнено условие ухода из отладки, ассоциированное с точкой ухода;
восстанавливают (262) переменные интерпретатора, соответствующие переменным, ассоциированным с исполняемым байт-кодом; и
возобновляют (264) отладку программы в интерпретируемом режиме в точке, в которой прекращена отладка машинного кода.
7. Способ по п. 6, дополнительно содержащий этап, на котором:
принимают упомянутую по меньшей мере одну точку ухода из отладки для программы, причем упомянутая по меньшей мере одна точка ухода из отладки содержит одно из: в начале функции, на обратной петле цикла, когда возвращается функция, когда возвращается вызов вспомогательной функции, когда возвращается библиотека или когда в машинном коде встречается оператор отладчика.
8. Способ по п. 6, дополнительно содержащий этап, на котором:
переходят к отладке в интерпретируемом режиме в ответ на прием операции отладки, содержащей операцию управления исполнением, содержащую одну из операции асинхронного останова, пошаговой работы, точки останова или операции останова по исключению.
9. Способ по п. 6, дополнительно содержащий этап, на котором определяют, что выполнено условие ухода из отладки, путем определения глубины стека у стека, ассоциированного с программой.
10. Считываемый компьютером носитель информации, содержащий исполняемые компьютером команды, которые при исполнении побуждают по меньшей мере один процессор вычислительного устройства выполнить по меньшей мере один из способов по пп. 6-9.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/911,108 US10127138B2 (en) | 2013-06-06 | 2013-06-06 | Debugging native code by transitioning from execution in native mode to execution in interpreted mode |
US13/911,108 | 2013-06-06 | ||
PCT/US2014/040581 WO2014197406A1 (en) | 2013-06-06 | 2014-06-03 | Debugging native code by transitioning from execution in native mode to execution in interpreted mode |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2015152048A true RU2015152048A (ru) | 2017-06-07 |
RU2015152048A3 RU2015152048A3 (ru) | 2018-05-17 |
RU2668973C2 RU2668973C2 (ru) | 2018-10-05 |
Family
ID=51033543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015152048A RU2668973C2 (ru) | 2013-06-06 | 2014-06-03 | Отладка машинного кода путем перехода от исполнения в собственном режиме к исполнению в интерпретируемом режиме |
Country Status (11)
Country | Link |
---|---|
US (1) | US10127138B2 (ru) |
EP (1) | EP3005121B1 (ru) |
JP (1) | JP6573875B2 (ru) |
KR (1) | KR102171050B1 (ru) |
CN (1) | CN105683924B (ru) |
AU (1) | AU2014275115B9 (ru) |
BR (1) | BR112015030302B1 (ru) |
CA (1) | CA2913730A1 (ru) |
MX (1) | MX2015016740A (ru) |
RU (1) | RU2668973C2 (ru) |
WO (1) | WO2014197406A1 (ru) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732670B1 (en) | 2010-06-29 | 2014-05-20 | Ca, Inc. | Ensuring determinism during programmatic replay in a virtual machine |
US8909990B2 (en) | 2012-08-04 | 2014-12-09 | Microsoft Corporation | Historical software diagnostics using lightweight process snapshots |
CN103678340B (zh) * | 2012-09-07 | 2016-09-14 | 腾讯科技(深圳)有限公司 | 浏览器引擎的运行方法、装置、浏览器及终端 |
US10289411B2 (en) * | 2013-11-18 | 2019-05-14 | Microsoft Technology Licensing, Llc | Diagnosing production applications |
US9632915B2 (en) | 2014-10-29 | 2017-04-25 | Microsoft Technology Licensing, Llc. | Historical control flow visualization in production diagnostics |
US9612939B2 (en) | 2014-10-29 | 2017-04-04 | Microsoft Technology Licensing, Llc. | Diagnostic workflow for production debugging |
US10089259B2 (en) * | 2015-07-21 | 2018-10-02 | BigStream Solutions, Inc. | Precise, efficient, and transparent transfer of execution between an auto-generated in-line accelerator and processor(s) |
US9772925B2 (en) * | 2015-10-22 | 2017-09-26 | Microsoft Technology Licensing, Llc | Storage access debugging with disassembly and symbol entries |
KR101769848B1 (ko) * | 2015-12-30 | 2017-08-22 | (주)비아이매트릭스 | 상용 인터프리터를 이용한 스크립트 기반 데이터 처리 시스템 |
CN107885650A (zh) * | 2016-09-30 | 2018-04-06 | 联芯科技有限公司 | 一种程序调试方法及系统 |
EP3330859A1 (en) * | 2016-12-05 | 2018-06-06 | Universiteit Gent | Self-debugging |
US10169193B2 (en) | 2016-12-13 | 2019-01-01 | International Business Machines Corporation | Common debug scripting framework for driving hybrid applications consisting of compiled languages and interpreted languages |
US10846211B2 (en) * | 2018-03-21 | 2020-11-24 | Microsoft Technology Licensing, Llc | Testing kernel mode computer code by executing the computer code in user mode |
US10747645B2 (en) * | 2018-04-27 | 2020-08-18 | Microsoft Technology Licensing, Llc | Selectively tracing portions of computer process execution |
EP3891613B1 (en) * | 2019-01-10 | 2023-01-11 | Siemens Industry Software Inc. | Software checkpoint-restoration between distinctly compiled executables |
US11150926B2 (en) | 2019-02-22 | 2021-10-19 | International Business Machines Corporation | Native code generation for cloud services |
CN110347570B (zh) * | 2019-07-02 | 2021-08-10 | 昆明理工大学 | 一种ide环境下代码自动生成工具分析方法 |
CN112395185B (zh) * | 2019-08-15 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 一种程序测试的方法及相关装置 |
CN110597502B (zh) * | 2019-08-20 | 2023-05-23 | 北京东方国信科技股份有限公司 | 一种基于java实现PL/SQL语言的单步调试方法 |
CN110569039A (zh) * | 2019-09-10 | 2019-12-13 | 浪潮软件股份有限公司 | 一种java在平台优化运行的方法 |
CN110865940B (zh) * | 2019-11-11 | 2022-04-05 | 腾讯科技(深圳)有限公司 | 一种程序卡顿定位的方法以及相关装置 |
US11748233B2 (en) * | 2020-04-30 | 2023-09-05 | Red Hat, Inc. | Debugging a native compiled application from an integrated development environment |
US11226799B1 (en) * | 2020-08-31 | 2022-01-18 | International Business Machines Corporation | Deriving profile data for compiler optimization |
CN114237763B (zh) * | 2021-12-23 | 2023-06-02 | 建信金融科技有限责任公司 | 提高组件首次加载速度的方法、装置、设备、介质及产品 |
CN114327776A (zh) * | 2021-12-30 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 用于智能合约的调试方法、调试设备和调试系统 |
CN116775501B (zh) * | 2023-08-25 | 2023-12-12 | 荣耀终端有限公司 | 一种软件测试方法、服务器、可读存储介质及芯片系统 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0766342B2 (ja) | 1985-11-12 | 1995-07-19 | オムロン株式会社 | プログラムテスト装置 |
US5058052A (en) * | 1989-10-16 | 1991-10-15 | Ge Fanuc Automation North America, Inc. | Method for checking the syntax of an instruction list program to determine if the program is expressible as a relay ladder diagram by a programmable logic controller |
JP2926898B2 (ja) | 1990-05-30 | 1999-07-28 | 横河電機株式会社 | デバッグ・サポート装置 |
EP0490478A2 (en) * | 1990-12-14 | 1992-06-17 | Tektronix Inc. | Automatic compilation of model equations into a gradient based analog simulator |
US5450575A (en) * | 1991-03-07 | 1995-09-12 | Digital Equipment Corporation | Use of stack depth to identify machine code mistakes |
US5339422A (en) * | 1991-03-07 | 1994-08-16 | Digital Equipment Corporation | System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment |
JPH08286896A (ja) | 1995-04-14 | 1996-11-01 | Mitsubishi Electric Corp | ソフトウェア開発方法及びソフトウェア開発システム |
US5956479A (en) * | 1995-11-13 | 1999-09-21 | Object Technology Licensing Corporation | Demand based generation of symbolic information |
US6158045A (en) * | 1995-11-13 | 2000-12-05 | Object Technology Licensing Corporation | Portable debugging services utilizing a client debugger object and a server debugger object with flexible addressing support |
US5732210A (en) * | 1996-03-15 | 1998-03-24 | Hewlett-Packard Company | Use of dynamic translation to provide fast debug event checks |
US5889981A (en) * | 1996-05-07 | 1999-03-30 | Lucent Technologies Inc. | Apparatus and method for decoding instructions marked with breakpoint codes to select breakpoint action from plurality of breakpoint actions |
JP3237554B2 (ja) | 1996-12-27 | 2001-12-10 | 富士通株式会社 | 会話型デバッグ装置 |
US6275868B1 (en) * | 1997-03-12 | 2001-08-14 | Microsoft Corporation | Script Engine interface for multiple languages |
US5901315A (en) * | 1997-06-13 | 1999-05-04 | International Business Machines Corporation | Method for debugging a Java application having native method dynamic load libraries |
US6249907B1 (en) | 1998-03-24 | 2001-06-19 | International Business Machines Corporation | Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program |
US6434741B1 (en) * | 1998-04-30 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code using emulation |
GB9825102D0 (en) | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
GB2358261B (en) | 2000-01-17 | 2004-06-09 | Advanced Risc Mach Ltd | Data processing with native and interpreted program instruction words |
US7080359B2 (en) * | 2002-01-16 | 2006-07-18 | International Business Machines Corporation | Stack unique signatures for program procedures and methods |
US7124407B1 (en) * | 2000-08-16 | 2006-10-17 | Sun Microsystems, Inc. | Method and apparatus for caching native code in a virtual machine interpreter |
US20020138821A1 (en) * | 2001-01-23 | 2002-09-26 | Vadim Furman | Method and apparatus for seamless porting of object code between operating system environments |
US6826746B2 (en) * | 2001-03-08 | 2004-11-30 | International Business Machines Corporation | Debugger probe for object oriented programming |
US7370320B1 (en) * | 2001-07-24 | 2008-05-06 | Adobe Systems Incorporated | System and method for debugging programs run in a variety of environments |
US6996814B2 (en) | 2001-11-14 | 2006-02-07 | Sun Microsystems, Inc. | Method and apparatus for dynamically compiling byte codes into native code |
US20030204838A1 (en) * | 2002-04-30 | 2003-10-30 | Eric Caspole | Debugging platform-independent software applications and related code components |
US7299454B2 (en) * | 2003-02-26 | 2007-11-20 | Bea Systems, Inc. | Method for multi-language debugging |
US7401323B2 (en) * | 2003-04-21 | 2008-07-15 | Microsoft Corporation | Just-My-Code debugging |
US20040267766A1 (en) * | 2003-06-26 | 2004-12-30 | Andreas Marek | Defining user-defined data types and/or user-defined methods using an interpreted programming language |
US7484209B2 (en) * | 2003-08-12 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Instrumenting java code by modifying bytecodes |
US7882492B2 (en) * | 2004-09-17 | 2011-02-01 | Oracle America, Inc. | Intelligent computer program debugger, and system and method for implementing the same |
US20060161896A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Performing debug requests that are within the debug domain of a class loader |
DE102005045852A1 (de) * | 2005-09-26 | 2007-04-05 | Siemens Ag | Verfahren und System zum Schutz von Quellcode |
US8091071B2 (en) * | 2006-08-21 | 2012-01-03 | Sap, Ag | Method and system for template-based code generation |
CN101515248A (zh) | 2008-02-21 | 2009-08-26 | 国际商业机器公司 | 面向对象程序的跟踪方法和系统 |
JP2009252113A (ja) | 2008-04-09 | 2009-10-29 | Canon Inc | 情報処理装置、その制御方法及びコンピュータプログラム |
US8291389B2 (en) * | 2008-08-21 | 2012-10-16 | International Business Machines Corporation | Automatically detecting non-modifying transforms when profiling source code |
RU2390821C1 (ru) | 2008-10-23 | 2010-05-27 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Способ динамической инструментации |
US8756570B2 (en) * | 2008-12-30 | 2014-06-17 | Sap Ag | Defining a conditional breakpoint |
US8359584B2 (en) * | 2009-12-18 | 2013-01-22 | Microsoft Corporation | Debugging from a call graph |
US8997049B1 (en) * | 2010-05-21 | 2015-03-31 | Cadence Design Systems, Inc. | Method and system for debugging of compiled code using an interpreter |
US8484641B2 (en) * | 2010-07-12 | 2013-07-09 | International Business Machines Corporation | Implementing a versioned virtualized application runtime environment |
US20120117041A1 (en) | 2010-11-08 | 2012-05-10 | Verisign, Inc. | Debugging a stored procedure in a database |
US8572438B2 (en) * | 2011-06-24 | 2013-10-29 | Microsoft Corporation | N-way runtime interoperative debugging |
CN102855179A (zh) * | 2011-06-30 | 2013-01-02 | 国际商业机器公司 | 虚拟机环境下的程序调试方法和系统 |
US8539463B2 (en) | 2011-07-28 | 2013-09-17 | Qualcomm Innovation Center, Inc. | Apparatus and method for improving the performance of compilers and interpreters of high level programming languages |
US20130132063A1 (en) * | 2011-11-18 | 2013-05-23 | Michael J. Rieschl | Systems and methods for debugging just-in-time static translation in an emulated system |
-
2013
- 2013-06-06 US US13/911,108 patent/US10127138B2/en active Active
-
2014
- 2014-06-03 AU AU2014275115A patent/AU2014275115B9/en active Active
- 2014-06-03 KR KR1020157034649A patent/KR102171050B1/ko active IP Right Grant
- 2014-06-03 RU RU2015152048A patent/RU2668973C2/ru active
- 2014-06-03 BR BR112015030302-1A patent/BR112015030302B1/pt active IP Right Grant
- 2014-06-03 CN CN201480043987.3A patent/CN105683924B/zh active Active
- 2014-06-03 JP JP2016518389A patent/JP6573875B2/ja active Active
- 2014-06-03 EP EP14734341.2A patent/EP3005121B1/en active Active
- 2014-06-03 CA CA2913730A patent/CA2913730A1/en not_active Abandoned
- 2014-06-03 WO PCT/US2014/040581 patent/WO2014197406A1/en active Application Filing
- 2014-06-03 MX MX2015016740A patent/MX2015016740A/es unknown
Also Published As
Publication number | Publication date |
---|---|
AU2014275115B2 (en) | 2019-07-11 |
WO2014197406A1 (en) | 2014-12-11 |
JP2016529582A (ja) | 2016-09-23 |
JP6573875B2 (ja) | 2019-09-11 |
CA2913730A1 (en) | 2014-12-11 |
KR102171050B1 (ko) | 2020-10-28 |
BR112015030302A2 (pt) | 2017-07-25 |
EP3005121B1 (en) | 2019-03-06 |
BR112015030302B1 (pt) | 2022-04-19 |
CN105683924A (zh) | 2016-06-15 |
KR20160018522A (ko) | 2016-02-17 |
MX2015016740A (es) | 2016-08-03 |
RU2015152048A3 (ru) | 2018-05-17 |
AU2014275115B9 (en) | 2019-07-25 |
US20140366007A1 (en) | 2014-12-11 |
EP3005121A1 (en) | 2016-04-13 |
CN105683924B (zh) | 2019-03-19 |
AU2014275115A1 (en) | 2015-12-10 |
US10127138B2 (en) | 2018-11-13 |
RU2668973C2 (ru) | 2018-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2015152048A (ru) | Отладка машинного кода путем перехода от исполнения в собственном режиме к исполнению в интерпретируемом режиме | |
JP2017516210A5 (ru) | ||
US10540262B2 (en) | Using edit and continue to dynamically set and unset optimizations in source code while debugging | |
US10261889B2 (en) | Techniques for edit-and-continue and enhanced optimized debugging on optimized code | |
JP2020024717A5 (ru) | ||
JP2016528650A5 (ru) | ||
JP2017509999A5 (ru) | ||
JP2014501412A5 (ru) | ||
JP2014500564A5 (ru) | ||
JP2015511737A5 (ru) | ||
CN106708497B (zh) | 一种代码执行方法及装置 | |
WO2015079291A1 (en) | Code injection for conditional breakpoints | |
US9639343B2 (en) | Method for altering execution of a program, debugger, and computer-readable medium | |
FR2969334B1 (fr) | Module materiel de securite et procede de debogage d'un tel module | |
CN109614107A (zh) | 一种软件开发工具包的集成方法和装置 | |
Kästner et al. | Proving the absence of stack overflows | |
JP6357814B2 (ja) | 未完成ソフトウェアの分析 | |
CN103699485B (zh) | 应用程序调试方法和装置 | |
GB2384088A (en) | Streamlining ata device intialization | |
WO2014117668A1 (zh) | 一种在安全环境中生成代码提高软件保护强度的方法 | |
JP6375649B2 (ja) | ソフトウェアプログラムの効率を高める方法及びプロセッサ | |
CN110597502A (zh) | 一种基于java实现PL/SQL语言的单步调试方法 | |
JP2017045144A5 (ru) | ||
Asghar et al. | Efficient debugging of large algorithmic modelica applications | |
JP2016528638A5 (ru) |