"PowerGDB user Guide"의 두 판 사이의 차이
(새 문서: <p> </p> <h2><span style="font-family: malgun; font-size: large;">Overview</span></h2> <p><span style="font-family: malgun; font-size: large;">본 자료는 Software Debugging So...) |
|||
(같은 사용자에 의한 6개의 중간 편집이 숨겨짐) | |||
1번째 줄: | 1번째 줄: | ||
<p> </p> | <p> </p> | ||
− | <h2><span style="font-family: malgun; font-size: large;">Overview</span></h2> | + | <h2><strong><span style="font-family: malgun; font-size: large;">Overview</span></strong></h2> |
− | <p><span style="font-family: malgun; font-size: large;">본 자료는 Software Debugging Solution인 | + | <p><span style="font-family: malgun; font-size: large;">본 자료는 Software Debugging Solution인 UndoDB를 소개하고 Front End인 TRACE32 Powerview를 이용해 디버깅할 수 있는 사용방법을 정리한 문서입니다.</span></p> |
− | <p><span style="font-family: malgun; font-size: large;">Linux 기반의 application을 디버깅할 수 있는 | + | <p><span style="font-family: malgun; font-size: large;">Linux 기반의 application을 디버깅할 수 있는 UndoDB는 JTAG port와 같은 별도의 HW port가 필요없으며, Hardware Debugger를 사용하지 않습니다.</span></p> |
<p> </p> | <p> </p> | ||
− | <h3><span style="font-family: malgun; font-size: large;">사용 환경</span></h3> | + | <h3><strong><span style="font-family: malgun; font-size: large;">사용 환경</span></strong></h3> |
− | <p><span style="font-family: malgun; font-size: large;"> | + | <p><span style="font-family: malgun; font-size: large;">UndoDB를 사용할 수 있는 환경은 다음과 같습니다.</span></p> |
<p><span style="font-family: malgun; font-size: large;">Linux 기반의 application을 디버깅하는 Software Debugging solution이기 때문에 Linux 환경은 대부분 지원이 가능합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">Linux 기반의 application을 디버깅하는 Software Debugging solution이기 때문에 Linux 환경은 대부분 지원이 가능합니다.</span></p> | ||
<p> </p> | <p> </p> | ||
27번째 줄: | 27번째 줄: | ||
</div> | </div> | ||
<p> </p> | <p> </p> | ||
− | <h2><span style="font-family: malgun; font-size: large;"> | + | <h2><strong><span style="font-family: malgun; font-size: large;">UndoDB설정 및 실행</span></strong></h2> |
− | <p><span style="font-family: malgun; font-size: large;"> | + | <p><span style="font-family: malgun; font-size: large;">UndoDB를 효율적으로 사용하기 위해 PGDB Package를 활용합니다.</span></p> |
− | + | ||
− | + | ||
− | + | ||
<p> </p> | <p> </p> | ||
+ | <h3><strong><span style="font-family: malgun; font-size: large;">PGDB 설정</span></strong></h3> | ||
+ | <p><span style="font-family: malgun; font-size: large;">1) PGDB package는 UndoDB효율적으로 사용하기 위한 환경이며, Linux application 디버깅 환경을 단순화 시켜줍니다. 또한 여러 환경을 하나의 디렉토리에서 사용하기 때문에 관리가 용이합니다.</span></p> | ||
+ | <p><img src="/data/wiki/2015-05-29/1432885861.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
<p><span style="font-family: malgun; font-size: large;">2) PGDB를 실행하기 위해서는 C:\T32\PGDB 내에 link 파일을 이용하여 실행합니다. ARM을 기준으로 실행하려면 PwerGDB ARM link파일을 실행하시면 됩니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">2) PGDB를 실행하기 위해서는 C:\T32\PGDB 내에 link 파일을 이용하여 실행합니다. ARM을 기준으로 실행하려면 PwerGDB ARM link파일을 실행하시면 됩니다.</span></p> | ||
+ | <p><img src="/data/wiki/2015-05-29/1432885875.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
− | + | <p><span style="font-family: malgun; font-size: large;">3) 해당 link 파일을 실행하면 UndoDB의 GUI인 TRACE32 Powerview를 실행합니다. 이후 SoC와 OS type을 선택한 뒤 Start 버튼을 클릭하면 환경 설정이 완료됩니다.</span></p> | |
− | <p><span style="font-family: malgun; font-size: large;">3) 해당 link 파일을 실행하면 | + | <p><img src="/data/wiki/2015-05-29/1432885887.jpg" alt="" /></p> |
− | <p> | + | |
<p> </p> | <p> </p> | ||
<p><span style="font-family: malgun; font-size: large;">4) 설정된 SoC와 OS를 기준으로 Debug 메뉴를 만들어주며 해당 메뉴를 통해서 디버깅을 할 수 있습니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">4) 설정된 SoC와 OS를 기준으로 Debug 메뉴를 만들어주며 해당 메뉴를 통해서 디버깅을 할 수 있습니다.</span></p> | ||
+ | <p><img src="/data/wiki/2015-05-29/1432885901.jpg" alt="" /></p> | ||
<table cellspacing="0" cellpadding="0"> | <table cellspacing="0" cellpadding="0"> | ||
<tbody> | <tbody> | ||
53번째 줄: | 54번째 줄: | ||
<li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Setting COM port</strong></span></li> | <li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Setting COM port</strong></span></li> | ||
</ul> | </ul> | ||
− | <span style="font-family: malgun; font-size: large;"> : UART port 설정(Linux 환경만 해당) </span> | + | <span style="font-family: malgun; font-size: large;"> : UART port 설정(Linux 환경만 해당) </span> |
<ul> | <ul> | ||
<li><span style="font-family: malgun; font-size: large;"><strong> Execute Server</strong></span></li> | <li><span style="font-family: malgun; font-size: large;"><strong> Execute Server</strong></span></li> | ||
</ul> | </ul> | ||
− | <span style="font-family: malgun; font-size: large;"> : | + | <span style="font-family: malgun; font-size: large;"> : UndoDB server 실행 </span> |
<ul> | <ul> | ||
<li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>App Main Debug</strong></span></li> | <li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>App Main Debug</strong></span></li> | ||
</ul> | </ul> | ||
− | <span style="font-family: malgun; font-size: large;"> : Application의 main 함수부터 디버깅 </span> | + | <span style="font-family: malgun; font-size: large;"> : Application의 main 함수부터 디버깅 </span> |
<ul> | <ul> | ||
<li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>App Attach Debug</strong></span></li> | <li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>App Attach Debug</strong></span></li> | ||
</ul> | </ul> | ||
− | <span style="font-family: malgun; font-size: large;"> : 실행되고 있는 application을 디버깅 </span> | + | <span style="font-family: malgun; font-size: large;"> : 실행되고 있는 application을 디버깅 </span> |
<ul> | <ul> | ||
<li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Multi-process Debug</strong></span></li> | <li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Multi-process Debug</strong></span></li> | ||
</ul> | </ul> | ||
− | <span style="font-family: malgun; font-size: large;"> : 두 개 이상의 process를 동시에 디버깅 </span> | + | <span style="font-family: malgun; font-size: large;"> : 두 개 이상의 process를 동시에 디버깅 </span> |
<ul> | <ul> | ||
<li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Load Symbol by Autoloader</strong></span></li> | <li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Load Symbol by Autoloader</strong></span></li> | ||
</ul> | </ul> | ||
− | <span style="font-family: malgun; font-size: large;"> : Dynamic Library의 symbol 자동 로딩 </span> | + | <span style="font-family: malgun; font-size: large;"> : Dynamic Library의 symbol 자동 로딩 </span> |
<ul> | <ul> | ||
<li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Display Processes</strong></span></li> | <li><span style="font-family: malgun; font-size: large;"><strong> </strong><strong>Display Processes</strong></span></li> | ||
86번째 줄: | 87번째 줄: | ||
</tbody> | </tbody> | ||
</table> | </table> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<p> </p> | <p> </p> | ||
<p><span style="font-family: malgun; font-size: large;">5) Linux 환경의 경우 serial을 위한 COM port 설정을 진행합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">5) Linux 환경의 경우 serial을 위한 COM port 설정을 진행합니다.</span></p> | ||
+ | <p><img src="/data/wiki/2015-05-29/1432885930.jpg" alt="" /><span style="white-space: pre;"> <img src="/data/wiki/2015-05-29/1432885936.jpg" alt="" /></span></p> | ||
<p> </p> | <p> </p> | ||
− | < | + | <h1><strong><span style="font-family: malgun; font-size: large;">Debugging</span></strong></h1> |
− | + | <h2><strong><span style="font-family: malgun; font-size: large;">Application Main Debugging</span></strong></h2> | |
− | <h2><span style="font-family: malgun; font-size: large;"> | + | |
<p><span style="font-family: malgun; font-size: large;">1) [Debug] – [Execute Server]를 선택합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">1) [Debug] – [Execute Server]를 선택합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886074.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">2) Server가 정상적으로 실행하는지 확인합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">2) Server가 정상적으로 실행하는지 확인합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886084.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">3) Server 실행 후 application을 실행하기 위해 [Debug] – [App Main Debug]를 선택합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">3) Server 실행 후 application을 실행하기 위해 [Debug] – [App Main Debug]를 선택합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886091.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">4) 파일시스템의 경로를 이용하여 application이름을 입력하고 OK 버튼을 클릭합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">4) 파일시스템의 경로를 이용하여 application이름을 입력하고 OK 버튼을 클릭합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886103.jpg" alt="" /></p> |
− | <p><span style="font-family: malgun; font-size: large;">5) 먼저 | + | <p><span style="font-family: malgun; font-size: large;">5) 먼저 UndoDB는 server와 연결하고 application 실행 후 symbol loading을 위해 dialog를 open합니다.</span></p> |
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886110.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">6) Symbol을 선택하면 해당 application의 main 함수에 멈추는 것을 확인할 수 있습니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">6) Symbol을 선택하면 해당 application의 main 함수에 멈추는 것을 확인할 수 있습니다.</span></p> | ||
+ | <p><img src="/data/wiki/2015-05-29/1432886118.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
− | < | + | <h2><strong><span style="font-family: malgun; font-size: large;">Application Main Debugging</span></strong></h2> |
− | + | ||
<p><span style="font-family: malgun; font-size: large;">1) [Debug] – [Execute Server]를 선택합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">1) [Debug] – [Execute Server]를 선택합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886397.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">2) Server가 정상적으로 실행하는지 확인합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">2) Server가 정상적으로 실행하는지 확인합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886405.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">3) Server 실행 후 application을 실행하기 위해 [Debug] – [App Attach Debug]를 선택합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">3) Server 실행 후 application을 실행하기 위해 [Debug] – [App Attach Debug]를 선택합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886412.jpg" alt="" /></p> |
− | <p><span style="font-family: malgun; font-size: large;">4) 먼저 | + | <p><span style="font-family: malgun; font-size: large;">4) 먼저 UndoDB와 server가 연결되고, 실행되고 있는 application이름을 입력한 후 OK 버튼을 클릭합니다</span></p> |
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886419.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">5) 해당 application에 attach된 후 디버깅을 위한 symbol loading window가 open됩니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">5) 해당 application에 attach된 후 디버깅을 위한 symbol loading window가 open됩니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886430.jpg" alt="" /></p> |
<p> </p> | <p> </p> | ||
<p><span style="font-family: malgun; font-size: large;">6) 해당 symbol을 선택하면 attach된 시점의 정보를 확인할 수 있습니다. 특정 함수에 breakpoint를 설정한 후 running합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">6) 해당 symbol을 선택하면 attach된 시점의 정보를 확인할 수 있습니다. 특정 함수에 breakpoint를 설정한 후 running합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886437.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">7) 설정된 breakpoint에 멈추는 것을 확인할 수 있습니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">7) 설정된 breakpoint에 멈추는 것을 확인할 수 있습니다.</span></p> | ||
+ | <p><img src="/data/wiki/2015-05-29/1432886444.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
− | < | + | <h2><strong><span style="font-family: malgun; font-size: large;">Reverse 기능 활용</span></strong></h2> |
− | + | <p><span style="font-family: malgun; font-size: large;">UndoDB는 실행된 application의 정보를 이용해서 reverse 기능을 활용해 forward/ backward debugging을 할 수 있습니다.</span></p> | |
− | <p><span style="font-family: malgun; font-size: large;"> | + | |
<p><span style="font-family: malgun; font-size: large;">아래 기능 설명은 application이 main부터 실행되어 종료되는 시점까지의 정보를 이용해 reverse 기능을 활용한 설명입니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">아래 기능 설명은 application이 main부터 실행되어 종료되는 시점까지의 정보를 이용해 reverse 기능을 활용한 설명입니다.</span></p> | ||
<p> </p> | <p> </p> | ||
− | <p><span style="font-family: malgun; font-size: large;">1) | + | <p><span style="font-family: malgun; font-size: large;">1) UndoDB를 이용해 Application main debugging을 시작합니다.</span></p> |
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886772.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">2) Application을 running 시켜 종료되는 시점까지 기다립니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">2) Application을 running 시켜 종료되는 시점까지 기다립니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886784.jpg" alt="" /></p> |
+ | <p><img src="/data/wiki/2015-05-29/1432886793.jpg" alt="" /></p> | ||
+ | <p><img src="/data/wiki/2015-05-29/1432886819.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
<p><span style="font-family: malgun; font-size: large;">3) 실행이 완료된 application 상태에서 이전의 main함수까지 이동하기 위해서 go.back main 명령을 입력합니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">3) 실행이 완료된 application 상태에서 이전의 main함수까지 이동하기 위해서 go.back main 명령을 입력합니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886826.jpg" alt="" /></p> |
<p><span style="font-family: malgun; font-size: large;">4) main함수부터 디버깅할 수 있도록 모든 정보를 복원하며, forward/ backward 기능을 이용해 수행된 정보를 확인할 수 있습니다.</span></p> | <p><span style="font-family: malgun; font-size: large;">4) main함수부터 디버깅할 수 있도록 모든 정보를 복원하며, forward/ backward 기능을 이용해 수행된 정보를 확인할 수 있습니다.</span></p> | ||
− | <p> | + | <p><img src="/data/wiki/2015-05-29/1432886834.jpg" alt="" /></p> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<p> </p> | <p> </p> |
2015년 7월 21일 (화) 15:44 기준 최신판
목차
Overview
본 자료는 Software Debugging Solution인 UndoDB를 소개하고 Front End인 TRACE32 Powerview를 이용해 디버깅할 수 있는 사용방법을 정리한 문서입니다.
Linux 기반의 application을 디버깅할 수 있는 UndoDB는 JTAG port와 같은 별도의 HW port가 필요없으며, Hardware Debugger를 사용하지 않습니다.
사용 환경
UndoDB를 사용할 수 있는 환경은 다음과 같습니다.
Linux 기반의 application을 디버깅하는 Software Debugging solution이기 때문에 Linux 환경은 대부분 지원이 가능합니다.
CPU | ARM / x86 |
Target OS | Linux, Android, Tizen, WebOS |
TRACE32 PowerView version | 2015년 이상 |
UndoDB설정 및 실행
UndoDB를 효율적으로 사용하기 위해 PGDB Package를 활용합니다.
PGDB 설정
1) PGDB package는 UndoDB효율적으로 사용하기 위한 환경이며, Linux application 디버깅 환경을 단순화 시켜줍니다. 또한 여러 환경을 하나의 디렉토리에서 사용하기 때문에 관리가 용이합니다.
2) PGDB를 실행하기 위해서는 C:\T32\PGDB 내에 link 파일을 이용하여 실행합니다. ARM을 기준으로 실행하려면 PwerGDB ARM link파일을 실행하시면 됩니다.
3) 해당 link 파일을 실행하면 UndoDB의 GUI인 TRACE32 Powerview를 실행합니다. 이후 SoC와 OS type을 선택한 뒤 Start 버튼을 클릭하면 환경 설정이 완료됩니다.
4) 설정된 SoC와 OS를 기준으로 Debug 메뉴를 만들어주며 해당 메뉴를 통해서 디버깅을 할 수 있습니다.
|
5) Linux 환경의 경우 serial을 위한 COM port 설정을 진행합니다.
Debugging
Application Main Debugging
1) [Debug] – [Execute Server]를 선택합니다.
2) Server가 정상적으로 실행하는지 확인합니다.
3) Server 실행 후 application을 실행하기 위해 [Debug] – [App Main Debug]를 선택합니다.
4) 파일시스템의 경로를 이용하여 application이름을 입력하고 OK 버튼을 클릭합니다.
5) 먼저 UndoDB는 server와 연결하고 application 실행 후 symbol loading을 위해 dialog를 open합니다.
6) Symbol을 선택하면 해당 application의 main 함수에 멈추는 것을 확인할 수 있습니다.
Application Main Debugging
1) [Debug] – [Execute Server]를 선택합니다.
2) Server가 정상적으로 실행하는지 확인합니다.
3) Server 실행 후 application을 실행하기 위해 [Debug] – [App Attach Debug]를 선택합니다.
4) 먼저 UndoDB와 server가 연결되고, 실행되고 있는 application이름을 입력한 후 OK 버튼을 클릭합니다
5) 해당 application에 attach된 후 디버깅을 위한 symbol loading window가 open됩니다.
6) 해당 symbol을 선택하면 attach된 시점의 정보를 확인할 수 있습니다. 특정 함수에 breakpoint를 설정한 후 running합니다.
7) 설정된 breakpoint에 멈추는 것을 확인할 수 있습니다.
Reverse 기능 활용
UndoDB는 실행된 application의 정보를 이용해서 reverse 기능을 활용해 forward/ backward debugging을 할 수 있습니다.
아래 기능 설명은 application이 main부터 실행되어 종료되는 시점까지의 정보를 이용해 reverse 기능을 활용한 설명입니다.
1) UndoDB를 이용해 Application main debugging을 시작합니다.
2) Application을 running 시켜 종료되는 시점까지 기다립니다.
3) 실행이 완료된 application 상태에서 이전의 main함수까지 이동하기 위해서 go.back main 명령을 입력합니다.
4) main함수부터 디버깅할 수 있도록 모든 정보를 복원하며, forward/ backward 기능을 이용해 수행된 정보를 확인할 수 있습니다.