KR20140000397A - 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법 - Google Patents
다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법 Download PDFInfo
- Publication number
- KR20140000397A KR20140000397A KR1020120067239A KR20120067239A KR20140000397A KR 20140000397 A KR20140000397 A KR 20140000397A KR 1020120067239 A KR1020120067239 A KR 1020120067239A KR 20120067239 A KR20120067239 A KR 20120067239A KR 20140000397 A KR20140000397 A KR 20140000397A
- Authority
- KR
- South Korea
- Prior art keywords
- profiling
- information
- memory
- integrated
- thread
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템은, 각 가상 머신 상에서 독립적으로 동작하는 다중 언어에 의해 개발되는 어플리케이션에 대한 성능 평가 및 오류 검출을 수행하는 프로파일링 모듈; 및 상기 프로파일링 모듈로부터 수신한 프로파일링 결과를 사용자에게 나타내는 유저 인터페이스 모듈을 포함하고, 상기 프로파일링 모듈은 상기 각 가상 머신의 메모리 정보를 하나로 통합하기 위한 작업을 수행하는 메모리 관리부; 상기 메모리 관리부와 연결되어 통합 메모리 정보를 저장하는 통합 메모리부; 상기 각 가상 머신의 스택 내 스레드 정보를 하나로 통합하기 위한 작업을 수행하는 통합 스레드 관리부; 및 상기 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시하는 모니터링부를 포함하여 구성됨으로써, 어떠한 프로그래밍 언어로 개발된 것이던지 상관없이 어플리케이션에 대한 프로파일링을 자유롭게 한번에 수행할 수 있고, 개발 단계에서 보다 정확한 수정 및 보완이 가능해져 어플리케이션의 완성도 및 신뢰도를 향상시킬 수 있다는 장점이 있다.
Description
본 발명은 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법에 관한 것으로서, 보다 상세하게는, 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법에 관한 것이다.
최근 스마트 폰(Smart Phone), 태블릿 PC, 스마트 가전제품 등과 같은 스마트 기기의 사용이 점차적으로 증가하고 있으며, 그와 관련된 기술 개발 및 연구도 활발히 이루어지고 있다. 사용자는 스마트 기기의 어플리케이션(Application) 혹은 줄여서 앱(App)이라고 불리는 응용 소프트웨어를 실행시킴으로써, 스마트 기기로부터 다양한 기능을 제공받을 수 있다.
이러한 어플리케이션은 일반적으로 저급언어에서 고급언어까지 다양한 종류의 프로그래밍 언어를 이용하여 작성 및 개발된다. 특히, 최근에는 두 가지 종류 이상의 프로그래밍 언어(이하, '다중 언어'로 지칭)를 동시에 이용하여 하나의 어플리케이션을 개발하는 경우가 증가하고 있다.
상술한 스마트 기기와 관련된 환경 외에 데스크탑 PC, 노트북 등을 위한 환경에서 사용되는 응용프로그램의 경우도 다중 언어로 개발될 수 있고, 그러한 사례가 늘어나고 있는 추세이다.
한편, 다중 언어로 개발된 어플리케이션 혹은 응용프로그램은 일반적으로 다음과 같은 아키텍처로 구성된다. 도 1은 다중 언어로 개발된 일반적인 어플리케이션의 아키텍처에 대한 일 예를 간략히 나타낸 블록도이다.
다중 언어로 어플리케이션을 개발하는 경우, 어플리케이션의 기본 틀을 구성하는 메인 언어(10)와, 특정 기능만을 담당하는 서브 언어(20)가 사용될 수 있다. 예를 들어, 안드로이드에서 어플리케이션의 메인 알고리즘은 Java로 구성하고, 빠른 동작 속도가 필요한 서브 알고리즘은 C로 구성한다. Java로 구성된 메인 알고리즘은 달빅 가상 머신(Dalvik Virtual Machine) 혹은 자바 가상 머신(Java Virtual Machine) 위에서 동작함에 따라 높은 이식성(portability)을 가지는 장점이 있지만, 속도가 느리다는 단점이 있다.
메인 언어(10)와 서브 언어(20)는 하드웨어(40) 또는 컴퓨터가 이해할 수 있는 기계 언어(12, 22)로 변환되기 전에 각각 중간 단계 언어(11, 21)로 컴파일되고, 런타임(Run time) 중에 인터페이스 레이어(30, Interface Layer)를 통해 중간 단계 언어(11, 21) 간의 통신이 이루어질 수 있다.
어떤 언어 간의 통신인지에 따라 인터페이스 레이어(30)가 바뀔 수 있는데, 범용적으로 사용되는 인터페이스 레이어(30)는 아래 표 1과 같다.
프로그래밍 언어 종류 | 인터페이스 레이어 |
JAVA, C/C++ | JNI(Java Native Interface) |
C/C++, .NET | CLR(Common Language Runtime) |
JAVA, .NET | CLR(Common Language Runtime) |
JAVA, python | Jython |
C, python | Cpython |
만약 메인 언어(10)에서 특정 기능을 위한 서브 언어(20)를 호출하면, 서브 언어(20)는 그에 대응하는 기계 언어(22)를 통해 하드웨어(40)에서 동작을 수행하고, 메인 언어(10)는 서브 언어(20)의 수행 결과 값을 인터페이스 레이어(30)를 통해 전달 받아 해당 태스크(task)를 계속 수행한다.
이와 같이 다중 언어로 어플리케이션을 개발하면, 개발자는 각각의 언어가 갖는 장점을 상황에 따라 선택할 수 있다는 장점이 있다.
다만, 종래에는 상술한 다중 언어로 개발된 어플리케이션의 성능을 측정하는 데에 불편한 점이 있었다. 즉, 종래에는 단일 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템만을 제공하고 있었으므로, 개발자는 각각의 언어에 대해 따로 분석 작업을 수행해야 했었고, 그에 따라 분석할 수 없는 부분이 발생하여 어플리케이션의 성능을 정확하게 측정할 수 없었다.
예를 들어, 안드로이드 기반의 스마트 기기에서 'Traceview'를 이용하여 Java 언어를 프로파일링할 수 있고, 'Valgrind'를 이용하여 Native C언어를 프로파일링할 수 있다. 이와 같은 프로파일링 툴 혹은 프로파일링 어플리케이션은 서로 독립적으로 동작하고, 'Traceview'는 C 언어의 스레드 정보, CPU 및 메모리 정보를 추적할 수 없으며, 'Valgrind'는 Java 언어의 Task와 관련된 정보를 프로파일링할 수 없다는 한계가 있다.
또한, 미국공개특허 US 2011/0238812(발명의 명칭: SYSTEM AND METHOD FOR HIGH-PERFORMANCE PROFILING OF APPLICATION EVENTS)는 웹 기반 어플리케이션의 고성능 프로파일링을 위한 관리시스템 및 관리방법에 대해 개시하고 있으나, 다중 언어가 아닌 단일 언어로 개발된 어플리케이션을 대상으로 하고 있다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 본 발명의 일부 실시예는 다중 언어로 개발된 어플리케이션에 대해 프로파일링할 수 있는 프로파일링 시스템 혹은 프로파일러의 아키텍처를 제안하고자 한다.
또한, 본 발명의 일부 실시예는 다중 언어로 개발된 어플리케이션에 대해 종합적으로 성능 평가를 하면서 용이하게 오류 검출을 할 수 있어, 높은 완성도를 갖는 어플리케이션 개발에 많은 도움을 줄 수 있는 프로파일링 수행 시스템을 어플리케이션 개발자 및 사용자에게 제공하는 데에 그 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면(일 실시예)에 따른 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템은, 각 가상 머신 상에서 독립적으로 동작하는 다중 언어에 의해 개발되는 어플리케이션에 대한 성능 평가 및 오류 검출을 수행하는 프로파일링 모듈; 및 상기 프로파일링 모듈로부터 수신한 프로파일링 결과를 사용자에게 나타내는 유저 인터페이스 모듈을 포함하고, 상기 프로파일링 모듈은 상기 각 가상 머신의 메모리 정보를 하나로 통합하기 위한 작업을 수행하는 메모리 관리부; 상기 메모리 관리부와 연결되어 통합 메모리 정보를 저장하는 통합 메모리부; 상기 각 가상 머신의 스택 내 스레드 정보를 하나로 통합하기 위한 작업을 수행하는 통합 스레드 관리부; 및 상기 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시하는 모니터링부를 포함하여 구성된다.
또한, 본 발명의 제 2 측면 (다른 실시예)에 따른 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템을 이용한 프로파일링 방법은, 프로파일링 모듈이 각 가상 머신 상에서 독립적으로 동작하는 다중 언어에 의해 개발되는 어플리케이션에 대한 성능 평가 및 오류 검출을 수행하는 단계; 및 유저 인터페이스 모듈이 상기 성능 평가 및 오류 검출을 수행한 결과를 사용자에게 나타내는 단계를 포함하고, 상기 성능 평가 및 오류 검출을 수행하는 단계는 a) 상기 각 가상 머신의 메모리 정보를 하나로 통합하기 위한 작업을 수행하여 통합 메모리 정보를 생성 및 관리하는 단계; b) 상기 각 가상 머신의 스택 내 스레드 정보를 하나로 통합하기 위한 작업을 수행하여 통합 스레드 정보를 생성 및 관리하는 단계; 및 c) 상기 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시하는 단계를 포함하여 구성된다.
전술한 본 발명의 과제 해결 수단 중 어느 하나인 프로파일링 수행 시스템을 이용하면, 어떠한 프로그래밍 언어로 개발된 것이던지 상관없이, 어플리케이션에 대한 프로파일링을 자유롭게 수행할 수 있다는 장점이 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나인 프로파일링 수행 시스템을 이용하면, 기존의 프로파일링 수행 시스템 혹은 프로파일러와는 달리 다중 언어로 개발된 어플리케이션에 대해 한번에 프로파일링할 수 있어, 다중 언어 간 레퍼런스 값 전달, 함수 호출, 유기적 메모리 할당 등을 동시에 체크할 수 있다는 장점이 있다.
아울러, 본 발명의 과제 해결 수단 중 어느 하나인 프로파일링 수행 시스템을 이용하면, 개발자가 다중 언어 간 콜 그래프(Call Graph) 그리기 작업, 다중 언어간 인터페이스 호출 추적 과정을 통한 정확한 인터페이스 오버헤드 측정 작업 등과 같은 성능 확인 및 프로그램 오류검출을 편리하게 수행할 수 있게 되어, 개발의 편의성을 높이면서 개발된 어플리케이션에 대한 완성도 및 신뢰도를 향상시킬 수 있다는 장점이 있다.
도 1은 다중 언어로 개발된 일반적인 어플리케이션의 아키텍처에 대한 일 예를 간략히 나타낸 블록도,
도 2는 본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션 및 이러한 어플리케이션을 위한 프로파일링 수행 시스템의 구조를 간략하게 도시한 블록도,
도 3은 도 2에 도시된 프로파일링 모듈의 메모리 관리부를 설명하기 위한 블록도,
도 4는 도 2에 도시된 프로파일링 모듈의 통합 스레드 관리부를 설명하기 위한 블록도,
도 5는 본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템을 이용한 프로파일링 방법을 설명하기 위한 순서도,
도 6은 도 5의 성능 평가 및 오류 검출을 수행하는 단계에 대해 보다 구체적으로 설명하기 위한 순서도이다.
도 2는 본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션 및 이러한 어플리케이션을 위한 프로파일링 수행 시스템의 구조를 간략하게 도시한 블록도,
도 3은 도 2에 도시된 프로파일링 모듈의 메모리 관리부를 설명하기 위한 블록도,
도 4는 도 2에 도시된 프로파일링 모듈의 통합 스레드 관리부를 설명하기 위한 블록도,
도 5는 본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템을 이용한 프로파일링 방법을 설명하기 위한 순서도,
도 6은 도 5의 성능 평가 및 오류 검출을 수행하는 단계에 대해 보다 구체적으로 설명하기 위한 순서도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 2는 본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션 및 이러한 어플리케이션을 위한 프로파일링 수행 시스템의 구조를 간략하게 도시한 블록도이다.
본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템(100)은 프로파일링 모듈(110) 및 유저 인터페이스 모듈(120)을 포함하여 구성됨으로써, 위 어플리케이션에 대한 프로파일링을 수행한다.
소프트웨어 공학 분야에서 사용되는 프로파일링 수행 시스템(100) 혹은 프로파일러(Profiler)란, 메모리 점유상태, 특정 명령어(instructions)의 점유 상태, 함수 콜의 지속기간 등을 측정하는 동적 프로그램 분석 도구를 의미한다. 프로파일링 작업은 프로파일링 수행 시스템(100)에 의해 수행되고, 프로파일링 결과는 일반적으로 개발된 어플리케이션 또는 프로그램의 최적화를 위해 사용된다. 즉, 개발자는 프로파일링 작업을 통해 병목 현상이 일어나는 문제 등을 확인해볼 수 있고, 개발한 어플리케이션 또는 프로그램에 대한 성능 판단을 해볼 수 있으며, 궁극적으로 전체 시스템을 최적화시키는 데에 도움을 받을 수 있다.
프로파일링 모듈(110)은 각 가상 머신(50, 60, 70) 상에서 독립적으로 동작하는 다중 언어(10, 20a, 20b)에 의해 개발되는 어플리케이션에 대한 성능 평가 및 오류 검출을 수행한다.
본 발명에서 어플리케이션은 두 가지 종류 이상의 언어로 개발되는 다중 언어 어플리케이션이고, 도 2에서처럼 Java 언어로 개발된 태스크(10), C/C++ 언어로 개발된 태스크(20a), .NET 언어로 개발된 태스크(20b) 부분이 있을 수 있다. 도 2에서 본 발명의 일 실시예에 따른 어플리케이션의 메인 알고리즘을 구성하는 메인 언어는 Java일 수 있고, 특정 기능을 위한 서브 언어는 C/C++ 및 .NET 언어일 수 있다. 본 발명에 따른 어플리케이션을 위한 프로그래밍 언어의 종류는 C/C++, Java, .NET, C# 등으로 특별히 제한되지 않으며, 개발자의 개발 방식에 따라 메인 언어 및 서브 언어의 종류와 조합이 도 2와 다르게 결정될 수 있다.
이들 다중 언어는 중간 단계 언어로 각각 컴파일(Compile)되는데, 도 2의 경우 Java(10)는 자바 바이트 코드(Java Byte Code, 11)로, C/C++(20a)는 오브젝트 파일(Object File, 21a)로 그리고 .NET(20b)는 씨아이엘 파일(CIL File, 21b)로 컴파일될 수 있다.
런타임(Run time) 중에 인터페이스 레이어를 통해 중간 단계 언어 간의 통신이 이루어질 수 있는데, 인터페이스 레이어는 어플리케이션에 사용되는 다중 언어의 종류에 따라 표 1처럼 달라질 수 있다. 도 2에서는 JNI(30a)를 통해 Java Byte Code(11)와 C/C++(20a) 간의 통신을 수행하고, CLR(30b)를 통해 Object File(21a)와 CIL File(21b) 간의 통신을 수행할 수 있다. 즉, 메인 언어인 Java에서 서브 언어로 개발된 태스크 영역을 인터페이스 레이어를 통해 호출할 수 있다는 의미이다.
각각의 중간 단계 언어는 그에 대응하는 각각의 가상 머신 상에서 동작하고, 도 2의 경우처럼 메인 언어 태스크(10)를 구성하는 자바 바이트 코드(Java Byte Code, 11)를 위한 가상 머신(50)으로 JVM(Java Virtual Machine) 또는 안드로이드 운영체제를 위한 DVM(Dalvik Virtual Machine) 등이 있고, 서브 언어 태스크(20a, 20b)를 구성하는 오브젝트 파일(Object File, 21a) 및 씨아이엘 파일(CIL File, 21b)를 위한 가상 머신인 제 1 가상 머신, 제 2 가상 머신이 각각 있다. 제 1 가상 머신 및 제 2 가상 머신으로 사용될 수 있는 가상 머신의 종류는 특별히 제한되지 않는다.
상술한 것처럼, 프로파일링 모듈(110)은 각 가상 머신(50, 60, 70) 상에서 독립적으로 동작하는 다중 언어(10, 20a, 20b)에 의해 개발되는 어플리케이션을 위한 프로파일링 수행 시스템의 특징적인 구성으로서, 본 발명의 일 실시예에 따른 어플리케이션에 대한 프로파일링을 수행한다. 프로파일링 모듈(110)의 세부 구성에 대해서는 후술하기로 한다.
유저 인터페이스 모듈(120)은 상술한 프로파일링 모듈(110)로부터 수신한 프로파일링 결과를 사용자에게 나타낸다. 즉, 유저 인터페이스 모듈(120)은 프로파일 내용을 개발자 또는 사용자가 쉽게 확인할 수 있는 화면 인터페이스를 제공하고, 프로파일 내용을 출력하는 등의 부가적인 기능을 지원할 수 있다.
본 발명에서는 기존의 단일 언어를 대상으로 프로파일링을 수행하는 프로파일링 수행 시스템에서 확인할 수 없었던 프로파일링 결과를 얻을 수 있다.
구체적으로, 유저 인터페이스 모듈(120)은 메모리 영역의 레지스터 정보에 대한 모니터링 결과, 캐시 컨텐션(Cache Contention), 캐시 히트율(Cache hit ratio) 등의 캐시 정보에 대한 모니터링 결과 및 메인 메모리의 힙(Heap) 영역과 스택(Stack) 영역에 대한 모니터링 결과 등을 나타낼 수 있다. 이를 통해 개발자 또는 사용자는 메모리 할당 오류, 메모리 누수, 레이스 조건(Race Condition), 공유 데이터, 개인 영역 보호 등을 확인할 수 있다.
이뿐만 아니라, 유저 인터페이스 모듈(120)은 스레드 정보와 관련하여 메모리 사용정보, CPU 사용정보, 스레드 생성 및 스레드 종료 등의 정보를 추적 및 확인할 수 있으며, 다중 언어 간 레퍼런스 데이터 측정결과 정보, 함수 호출과 같은 이벤트가 발생함에 따라 소모되는 CPU 사이클과 메모리 사용량 측정결과 정보, 부가적인 오버헤드 측정결과 정보 등을 제공할 수 있다.
이하, 프로파일링 모듈(110)의 세부 구성에 대해 설명하기로 한다.
프로파일링 모듈(110)은 메모리 관리부(111), 통합 메모리부(112), 통합 스레드 관리부(113) 및 모니터링부(114)를 포함하여 구성된다.
메모리 관리부(111)는 각 가상 머신의 메모리 정보를 하나로 통합하기 위한 작업을 수행하고, VMMMU(Virtual Machine Memory Management Unit)로 표현될 수 있다. 도 2의 경우 메모리 관리부(111)는 다중 언어(10, 20a, 20b)에 의해 개발되는 어플리케이션의 동작을 위한 각 가상 머신(50, 60, 70)의 메모리 정보(51, 61, 71)를 하나로 통합하기 위한 작업을 수행한다.
메모리 관리부(111)에 대하여 보다 구체적으로 도 3을 참고하여 설명한다. 도 3은 각각 도 2에 도시된 프로파일링 모듈의 메모리 관리부를 설명하기 위한 블록도이다.
메모리 관리부(111)는 명령어 맵핑 테이블(1111), 레지스터 맵핑 테이블(1112) 및 가상논리 메모리 맵핑 테이블(1116)을 이용하여 각 작업을 수행할 수 있다.
도 3처럼 메모리 관리부(111)는 명령어 맵핑 테이블(1111)을 이용하여 제 1 가상 머신(60)의 메모리 정보 중 명령어 세트(Instruction Set, 63)에 대한 변환 작업을 수행한다. 즉, 메모리 관리부(111)는 ADD, MOV 등과 같은 명령어를 포함하는 명령어 세트(63)에 대하여 명령어 맵핑 테이블(1111)을 이용한 맵핑 작업을 수행하고, 그 수행 결과가 후술할 통합 메모리부(112)에서 호환될 수 있는 통합 명령어 세트(1115)에 반영될 수 있다. 덧붙여, 제 1 가상 머신(60)의 메모리 정보 중 명령어 세트(63)를 제외한 나머지 데이터에 대해서도 이와 동일한 방식 혹은 유사한 방식을 통해 변환 작업이 수행될 수 있다.
또한, 메모리 관리부(111)는 레지스터 맵핑 테이블(1112)을 이용하여 제 1 가상 머신(60)의 명령어 세트(63)를 위한 레지스터 정보(64)를 메모리 관리부(111)의 통합 레지스터(1113)로 이전시키는 작업을 수행한다. 예를 들어, 메모리 관리부(111)는 명령어 세트(63)에 대한 변환 작업을 수행하는 과정에서 필요한 제 1 가상 머신(60)의 레지스터 주소 정보 등을 통합 레지스터(1113)로 이전시킬 수 있다.
아울러, 메모리 관리부(111)는 가상논리 메모리 맵핑 테이블(1116)을 이용하여 상술한 명령어 세트(63)에 대한 변환 작업 및 동기화 작업(1114)을 기초로 생성된 통합 명령어 세트(1115)를 후술할 통합 메모리부(112) 혹은 물리적 메인 메모리로 맵핑시키는 작업을 수행한다.
여기서, 통합 명령어 세트(1115)는 제 1 가상 머신(60), 제 2 가상 머신(70)을 포함하는 다수의 가상 머신의 명령어 세트를 하나로 통합시킨 것이고, 통합화를 위하여 동기화 작업(1114)의 수행이 요구된다. 이러한 동기화 작업(1114)은 다중 언어 중 메인 언어를 위한 가상 머신의 메모리 정보를 기준으로 이루어지는 것이 바람직하다. 예를 들어, 도 2처럼 서브 언어(20a, 20b)를 위한 가상 머신(60, 70)이 동작하는 경우 가상 머신(60, 70)의 메모리 정보(61, 71)는 Java(10)를 위한 가상 머신(50)의 메모리 정보(51)를 기준으로 하여 동기화 작업(1114)이 이루어지고, 그 결과가 통합 명령어 세트(1115)에 반영될 수 있다.
이와 같이 상술한 메모리 관리부(111)를 통해 각 가상 머신의 메모리 정보를 동기화시키고 통합화할 수 있어, 본 발명의 일 실시예에 따른 프로파일링 수행 시스템(100)은 어플리케이션이 다중 언어로 개발 또는 작성되어 있을지라도, 한번에 메모리 정보에 대한 프로파일링이 가능해진다.
통합 메모리부(112)는 상술한 메모리 관리부(111)와 연결되어 통합 명령어 세트(1115)를 포함하는 통합 메모리 정보를 기억 및 저장한다. 즉, 통합 메모리부(112)는 운영체제가 메모리 주소 맵핑을 위해 사용하는 가상 메모리와 다른 구성으로서, 실제 램(RAM) 메모리의 기능을 에뮬레이팅(Emulating)하는 가상 물리 메모리를 의미하고, 상술한 메모리 관리부(111)로부터 수신되고 가상논리 메모리 맵핑 테이블(1116)을 통해 맵핑되는 통합 메모리 정보를 저장한다.
또한 통합 메모리부(112)는 동기화 및 통합화된 각 가상 머신의 메모리 정보를 기억 및 저장하고, 공용 메인 메모리 또는 물리적 메인 메모리와 읽기(Read)/쓰기(Write) 동작을 수행할 수 있다.
이와 같이 상술한 통합 메모리부(112)를 통해 동기화 및 통합화된 각 가상 머신의 메모리 정보를 저장할 수 있어, 본 발명의 일 실시예에 따른 프로파일링 수행 시스템(100)는 레이스 컨디션(Race Condition), 교착상태 발견(Deadlock Detection), 동기화 정보 등의 프로파일링 정보를 개발자 또는 사용자에게 제공할 수 있다.
덧붙여, 상술한 메모리 관리부(111) 및 통합 메모리부(112)의 동작은 제 1 가상 머신(60) 뿐만 아니라 제 2 가상 머신(70)에 대해서도 수행될 수 있다. 제 2 가상 머신(70)도 제 1 가상 머신(60)처럼 명령어 세트(73)를 포함하는 메모리 정보 및 레지스터 정보(74)를 가지고 있다. 도 3에 도시된 제 1, 제 2 가상 머신(60, 70) 이외에도 추가적인 가상 머신이 있을 수 있고, 이들에 대해서도 동일 또는 유사한 방식이 적용되어 통합 명령어 세트(1115)가 생성될 수 있다는 것을 관련 업계 종사자라면 용이하게 이해할 수 있을 것이다.
통합 스레드 관리부(113)에 대하여 보다 구체적으로 도 4를 참고하여 설명한다. 도 4는 도 2에 도시된 프로파일링 모듈의 통합 스레드 관리부를 설명하기 위한 블록도이다.
통합 스레드 관리부(113)는 각 가상 머신의 스택 내 스레드 정보를 하나로 통합하기 위한 작업을 수행하고, 유저 인터페이스 모듈(120)과 연결된다.
도 2의 경우 통합 스레드 관리부(113)는 다중 언어(10, 20a, 20b)에 의해 개발되는 어플리케이션의 동작을 위한 각 가상 머신(50, 60, 70)의 스레드 정보(52, 62, 72)를 하나로 통합하기 위한 작업을 수행한다. 도 4의 경우 통합 스레드 관리부(113)는 제 1 가상 머신 내 스택(65)의 스레드와 관련된 정보(66, 67, 68)와 제 2 가상 머신 내 스택(75)의 스레드와 관련된 정보(76, 77, 78)를 하나로 통합하기 위한 작업을 수행한다.
특히, 통합 스레드 관리부(113)는 미리 설정된 스레드 관련 이벤트가 발생하는 경우 또는 스레드 정보를 갱신하기 위한 요청신호를 수신하는 경우 스레드 정보를 하나로 통합하기 위한 작업을 수행할 수 있다.
예를 들어, 통합 스레드 관리부(113)는 어플리케이션의 실행 또는 어플리케이션의 종료 등과 같은 미리 설정된 스레드 관련 이벤트가 발생하는 경우 혹은 사용자가 설정해둔 멈춤 지점(Breaking Point) 신호와 같은 요청신호를 수신하는 경우, 그 시점의 스레드 정보(66, 76)를 각 가상 머신의 스택(65, 75)으로부터 읽어온다. 각 가상 머신은 어플리케이션(80)의 개발에 사용되는 다중 언어의 동작을 위한 것이고, 수신된 스레드 정보는 지역 변수(68, 78)의 데이터 및 위치, 전역 변수(67, 77)의 데이터 및 위치, 스레드의 CPU 점유량, 스레드 생성 및 종료 시점 중 하나 이상의 정보를 포함할 수 있다. 통합 스레드 관리부(113)를 수신된 스레드 정보를 이용하여 통합 스레드 정보를 갱신 및 동기화할 수 있다. 동기화 작업은 다중 언어 중 메인 언어를 위한 가상 머신의 스레드 정보를 기준으로 이루어질 수 있다.
이와 같이 상술한 통합 스레드 관리부(113)를 통해 각 가상 머신의 스레드 정보를 동기화시키고 통합화할 수 있어, 본 발명의 일 실시예에 따른 프로파일링 수행 시스템(100)은 어플리케이션이 다중 언어로 개발 또는 작성되어 있을지라도, 한번에 스레드 정보에 대한 프로파일링이 가능해진다.
또한, 모니터링부(114)는 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시한다.
도 2의 경우 모니터링부(114)는 JNI(30a), CLR(30b)과 같은 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시한다. 예를 들어, 레퍼런스 데이터 전달, 함수 호출 등과 같은 특정 이벤트가 인터페이스 레이어(30a, 30b)를 통해 감지되면, 후술할 유저 인터페이스 모듈(120)로 감지된 내용을 전달할 수 있다.
이와 같은 모니터링부(114)를 통해, 본 발명의 일 실시예에 따른 프로파일링 수행 시스템(100)은 다중 언어 간의 인터페이스 이벤트 발생 여부를 체크할 수 있고, 변수명, 사용 메모리 등과 같은 인테페이스에 관련된 데이터 정보, 인터페이스에 소모되는 오버헤드 등을 사용자에게 제공할 수 있다.
지금까지 설명한 것과 같이 본 발명의 일 실시예에 따른 프로파일링 수행 시스템을 이용하면, 다중 언어로 개발된 어플리케이션에 대한 성능 평가 및 오류 검출을 한번에 편리하게 수행할 수 있고, 각각의 언어가 사용하는 메모리 할당량, CPU점유율, 오버헤드 등과 관련된 종합적인 정보 및 유기적인 정보를 사용자에게 제공할 수 있다.
한편, 본 발명의 일 실시예에 따른 프로파일링 수행 시스템을 이용한 프로파일링 방법에 대해 도 5를 참고하여 설명한다. 도 5는 본 발명의 일 실시예에 따른 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템을 이용한 프로파일링 방법을 설명하기 위한 순서도이다.
본 발명의 일 실시예에 따른 프로파일링 수행 시스템을 이용한 프로파일링 방법은 우선 프로파일링 수행 시스템의 프로파일링 모듈에서 어플리케이션에 대한 성능 평가 및 오류 검출을 수행한다(S510). 이때, 어플리케이션은 각 가상 머신 상에서 독립적으로 동작하는 다중 언어에 의해 개발된 것이다. 즉, 어플리케이션은 두 가지 종류 이상의 프로그래밍 언어에 의해 개발 또는 작성된 것이고, 다중 언어에 대응하여 각각 독립적으로 동작하는 가상 머신을 통해 실행될 수 있다. 프로그래밍 언어에는 C/C++, Java, .NET, C# 등이 있을 수 있고, 특별히 제한되지 않는다.
이후에, 프로파일링 수행 시스템의 유저 인터페이스 모듈이 위 성능 평가 및 오류 검출을 수행한 결과를 사용자에게 나타낸다(S520). 사용자는 이와 같은 결과를 통해 상술한 어플리케이션을 지속적으로 보완해나갈 수 있어, 최종적으로 개발된 어플리케이션의 완성도 및 신뢰도를 향상시킬 수 있다.
이하, 도 6을 참고하여 본 발명의 일 실시예에 따른 프로파일링 수행 시스템을 이용한 프로파일링 방법을 상세하게 설명한다. 도 6은 도 5의 성능 평가 및 오류 검출을 수행하는 단계에 대해 보다 구체적으로 설명하기 위한 순서도이다.
다중 언어로 개발된 어플리케이션에 대한 성능 평가 및 오류 검출을 수행하기 위한 세부적인 과정은 다음과 같다.
프로파일링 모듈이 다중 언어의 동작을 위한 각 가상 머신의 메모리 정보를 하나로 통합하기 위한 작업을 수행하여 통합 메모리 정보를 생성 및 관리한다(S610).
프로파일링 모듈은 명령어 맵핑 테이블을 이용하여 각 가상 머신의 메모리 정보 중 명령어 세트에 대하여 변환 작업을 수행하고, 레지스터 맵핑 테이블을 이용하여 상술한 명령어 세트를 위한 레지스터 정보를 별도로 이전시키는 작업을 수행하며, 가상논리 메모리 맵핑 테이블을 이용하여 명령어 세트와 관련된 변환 작업 및 동기화 작업을 기초로 생성된 통합 명령어 세트를 통합 메모리 정보와 맵핑시키는 작업을 수행할 수 있다.
명령어 세트에 대한 변환 작업 및 레지스터 정보의 이전 작업은 프로파일링 모듈의 메모리 관리부에서 수행될 수 있고, 통합 명령어 세트를 통합 메모리 정보와 맵핑시키는 작업은 프로파일링 모듈 내 메모리 관리부와 통합 메모리부 간에 수행될 수 있는 것이다.
또한, 프로파일링 모듈이 상술한 각 가상 머신의 스택 내 스레드 정보를 하나로 통합하기 위한 작업을 수행하여 통합 스레드 정보를 생성 및 관리한다(S620).
특히, 미리 설정된 스레드 관련 이벤트가 발생하는 경우 또는 스레드 정보를 갱신하기 위한 요청신호를 수신하는 경우, 프로파일링 모듈은 그 시점에 각 가상 머신의 스택 내에 있는 스레드 정보를 수신하고, 수신한 스레드 정보를 통해 기존에 저장하고 있던 통합 스레드 정보를 새롭게 갱신할 수 있다.
아울러, 프로파일링 모듈이 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시 또는 모니터링한다(S630).
이와 같은 과정(S610 내지 S630)을 수행하고, 통합 메모리 정보, 통합 스레드 정보 및 인터페이스 레이어에 대한 감시 정보를 기초로 다중 언어로 개발된 어플리케이션에 대한 성능 평가 및 오류 검출을 수행한다(S640).
이후에, 유저 인터페이스 모듈이 위 성능 평가 및 오류 검출을 수행한 결과를 사용자에게 나타낸다(S650). 사용자는 이와 같은 결과를 통해 상술한 어플리케이션을 지속적으로 보완해나갈 수 있어, 최종적으로 개발된 어플리케이션의 완성도 및 신뢰도를 향상시킬 수 있다.
전술한 본 발명의 일 실시예에 따른 프로파일링 수행 시스템을 이용한 프로파일링 방법을 통해, 어떠한 프로그래밍 언어로 개발된 어플리케이션인지와 상관없이 자유롭게 한번에 프로파일링을 수행할 수 있다는 장점이 있다.
또한, 기존의 프로파일링 수행 시스템을 이용한 프로파일링 방법을 통해 확인할 수 없었던 다중 언어 간의 유기적인 동작으로 나타나는 프로파일링 결과 정보를 본 발명의 일 실시예에 따른 프로파일링 수행 시스템을 이용한 프로파일링 방법을 통해 확인 및 체크할 수 있고, 이를 통해 개발의 편의성을 높이면서 개발된 어플리케이션에 대한 완성도 및 신뢰도를 향상시킬 수 있다는 장점이 있다.
본 발명의 프로파일링 수행 시스템 및 프로파일링 방법은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍처를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 프로파일링 수행 시스템 110: 프로파일링 모듈
111: 메모리 관리부 112: 통합 메모리부
113: 통합 스레드 관리부 114: 모니터링부
120: 유저 인터페이스 모듈
111: 메모리 관리부 112: 통합 메모리부
113: 통합 스레드 관리부 114: 모니터링부
120: 유저 인터페이스 모듈
Claims (10)
- 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템에 있어서,
각 가상 머신 상에서 독립적으로 동작하는 다중 언어에 의해 개발되는 어플리케이션에 대한 성능 평가 및 오류 검출을 수행하는 프로파일링 모듈; 및
상기 프로파일링 모듈로부터 수신한 프로파일링 결과를 사용자에게 나타내는 유저 인터페이스 모듈을 포함하고,
상기 프로파일링 모듈은
상기 각 가상 머신의 메모리 정보를 하나로 통합하기 위한 작업을 수행하는 메모리 관리부;
상기 메모리 관리부와 연결되어 통합 메모리 정보를 저장하는 통합 메모리부;
상기 각 가상 머신의 스택 내 스레드 정보를 하나로 통합하기 위한 작업을 수행하는 통합 스레드 관리부; 및
상기 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시하는 모니터링부를 포함하는
프로파일링 수행 시스템.
- 제 1 항에 있어서, 상기 메모리 관리부는
명령어 맵핑 테이블을 이용하여 상기 메모리 정보 중 명령어 세트에 대한 변환 작업을 수행하고,
레지스터 맵핑 테이블을 이용하여 상기 명령어 세트를 위한 레지스터 정보를 상기 메모리 관리부의 통합 레지스터로 이전시키는 작업을 수행하고,
가상논리 메모리 맵핑 테이블을 이용하여 상기 변환 작업 및 동기화 작업을 기초로 생성된 통합 명령어 세트를 상기 통합 메모리부로 맵핑시키는 작업을 수행하는
프로파일링 수행 시스템.
- 제 2 항에 있어서, 상기 동기화 작업은 상기 다중 언어 중 메인 언어를 위한 가상 머신의 메모리 정보를 기준으로 이루어지는
프로파일링 수행 시스템.
- 제 1 항에 있어서, 상기 통합 스레드 관리부는 미리 설정된 스레드 관련 이벤트가 발생하는 경우 또는 스레드 정보를 갱신하기 위한 요청신호를 수신하는 경우 상기 스레드 정보를 하나로 통합하기 위한 작업을 수행하는
프로파일링 수행 시스템.
- 제 4 항에 있어서, 상기 미리 설정된 스레드 관련 이벤트는 상기 어플리케이션의 실행 또는 상기 어플리케이션의 종료인 것인
프로파일링 수행 시스템.
- 제 1 항에 있어서, 상기 스레드 정보는 지역 변수의 데이터 및 위치, 전역 변수의 데이터 및 위치, 스레드의 CPU 점유량, 스레드 생성 및 종료 시점 중 하나 이상의 정보를 포함하는
프로파일링 수행 시스템. - 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템을 이용한 프로파일링 방법에 있어서,
프로파일링 모듈이 각 가상 머신 상에서 독립적으로 동작하는 다중 언어에 의해 개발되는 어플리케이션에 대한 성능 평가 및 오류 검출을 수행하는 단계; 및
유저 인터페이스 모듈이 상기 성능 평가 및 오류 검출을 수행한 결과를 사용자에게 나타내는 단계를 포함하고,
상기 성능 평가 및 오류 검출을 수행하는 단계는
a) 상기 각 가상 머신의 메모리 정보를 하나로 통합하기 위한 작업을 수행하여 통합 메모리 정보를 생성 및 관리하는 단계;
b) 상기 각 가상 머신의 스택 내 스레드 정보를 하나로 통합하기 위한 작업을 수행하여 통합 스레드 정보를 생성 및 관리하는 단계; 및
c) 상기 다중 언어 간의 통신을 위한 인터페이스 레이어를 감시하는 단계를 포함하는
프로파일링 방법.
- 제 7 항에 있어서, 상기 a) 단계는
명령어 맵핑 테이블을 이용하여 상기 메모리 정보 중 명령어 세트에 대하여 변환 작업을 수행하는 단계;
레지스터 맵핑 테이블을 이용하여 상기 명령어 세트를 위한 레지스터 정보를 별도로 이전시키는 작업을 수행하는 단계; 및
가상논리 메모리 맵핑 테이블을 이용하여 상기 변환 작업 및 동기화 작업을 기초로 생성된 통합 명령어 세트를 상기 통합 메모리 정보와 맵핑시키는 작업을 수행하는 단계를 포함하는
프로파일링 방법.
- 제 7 항에 있어서, 상기 b) 단계에서 미리 설정된 스레드 관련 이벤트가 발생하는 경우, 상기 통합 스레드 정보를 갱신하는
프로파일링 방법.
- 제 7 항에 있어서, 상기 b) 단계에서 스레드 정보를 갱신하기 위한 요청신호를 수신하는 경우, 상기 통합 스레드 정보를 갱신하는
프로파일링 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120067239A KR101394225B1 (ko) | 2012-06-22 | 2012-06-22 | 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120067239A KR101394225B1 (ko) | 2012-06-22 | 2012-06-22 | 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140000397A true KR20140000397A (ko) | 2014-01-03 |
KR101394225B1 KR101394225B1 (ko) | 2014-05-14 |
Family
ID=50138276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120067239A KR101394225B1 (ko) | 2012-06-22 | 2012-06-22 | 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101394225B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101632152B1 (ko) * | 2015-08-11 | 2016-06-21 | 숭실대학교산학협력단 | 모바일 플랫폼 동적 분석 방지 장치 및 그 방법 |
WO2019231194A1 (ko) * | 2018-05-28 | 2019-12-05 | 삼성전자 주식회사 | 메모리 오류를 검출하는 방법 및 시스템 |
CN113645303A (zh) * | 2021-08-11 | 2021-11-12 | 曙光信息产业(北京)有限公司 | 数据传输方法、装置、计算机设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100380996B1 (ko) * | 2001-06-20 | 2003-04-23 | 한국전자통신연구원 | 자바 가상머신에서의 분산 객체간 일관성 유지 및 메모리분산 공유 시스템 및 그 방법 |
JP4011523B2 (ja) | 2003-07-07 | 2007-11-21 | シャープ株式会社 | アプリケーション管理装置 |
JP4062441B2 (ja) * | 2003-07-18 | 2008-03-19 | 日本電気株式会社 | 並列処理システム及び並列処理プログラム |
JP5577140B2 (ja) | 2010-04-12 | 2014-08-20 | 三菱電機ビルテクノサービス株式会社 | 情報処理システム及び情報処理方法 |
-
2012
- 2012-06-22 KR KR1020120067239A patent/KR101394225B1/ko not_active IP Right Cessation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101632152B1 (ko) * | 2015-08-11 | 2016-06-21 | 숭실대학교산학협력단 | 모바일 플랫폼 동적 분석 방지 장치 및 그 방법 |
WO2019231194A1 (ko) * | 2018-05-28 | 2019-12-05 | 삼성전자 주식회사 | 메모리 오류를 검출하는 방법 및 시스템 |
KR20190135337A (ko) * | 2018-05-28 | 2019-12-06 | 삼성전자주식회사 | 메모리 오류를 검출하는 방법 및 시스템 |
CN113645303A (zh) * | 2021-08-11 | 2021-11-12 | 曙光信息产业(北京)有限公司 | 数据传输方法、装置、计算机设备及存储介质 |
CN113645303B (zh) * | 2021-08-11 | 2024-04-23 | 曙光信息产业(北京)有限公司 | 数据传输方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR101394225B1 (ko) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3788490B1 (en) | Execution control with cross-level trace mapping | |
US10223097B2 (en) | Dynamic update of an application in compilation and deployment with cold-swapping | |
CN101739333B (zh) | 应用程序的调试方法、调试工具及调试装置 | |
Lin et al. | Benchmark dalvik and native code for android system | |
CN103064784B (zh) | 面向Xen环境的运行时内存泄漏检测方法及其实现系统 | |
JP6138142B2 (ja) | 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構 | |
US20090089766A1 (en) | Automatically Modifying a Native Code Module Accessed from Virtual Machine Bytecode to Determine Execution Information | |
JP2012084150A (ja) | 2パス自動アプリケーション計測 | |
US20090328005A1 (en) | Debugger call stack caching | |
US9471237B1 (en) | Memory consumption tracking | |
US11709720B1 (en) | Protocol for correlating user space data with kernel space data | |
CN103109276A (zh) | 系统测试方法 | |
US20100050157A1 (en) | System and process for debugging object-oriented programming code | |
WO2017087801A1 (en) | Dynamic update of an application in compilation and deployment | |
US8533683B2 (en) | Stack walking enhancements using sensorpoints | |
US20080127119A1 (en) | Method and system for dynamic debugging of software | |
US7908591B1 (en) | Memory profiling | |
WO2015027403A1 (en) | Testing multi-threaded applications | |
KR101394225B1 (ko) | 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법 | |
Binder et al. | Flexible and efficient profiling with aspect‐oriented programming | |
US9442818B1 (en) | System and method for dynamic data collection | |
Lai et al. | Fast profiling framework and race detection for heterogeneous system | |
US10296299B2 (en) | Server-side weaving of application-oriented-programming advice into computer code that preempts client-side load-time weaving | |
Seo et al. | A profiling method by PCB hooking and its application for memory fault detection in embedded system operational test | |
Hocko et al. | Reducing performance non-determinism via cache-aware page allocation strategies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |