디버깅 환경 및 방법 Lecture #14.

Slides:



Advertisements
Similar presentations
엑셀리포트를 이용한 날짜별 리포트 자동 저장 방법
Advertisements

컴퓨터와 인터넷.
Linux Debugging issues
USB Interface study 결과
제3장 C 프로그래밍 환경.
Power Java 제3장 이클립스 사용하기.
Power Java 제3장 이클립스 사용하기.
Cross Compiler를이용한 커널 컴파일 및 포팅
Cross Compiler를이용한 커널 컴파일 및 포팅 1
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
연결리스트(linked list).
제9장 C 프로그래밍 환경 창병모
Linux를 이용한 Embedded 장비 개발
디버깅 환경 및 방법 Lecture #14.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
Chapter 13 Wired LANs: Ethernet.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
07. 디바이스 드라이버의 초기화와 종료 김진홍
Root Filesystem Porting
1. C++ 시작하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Root Filesystem Porting
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
ARM Development Suite v1.2
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
DK-128 개발환경 설정 아이티즌 기술연구소 김태성 연구원
임베디드 소프트웨어 설계.
Microprocessor I/O Port & CLCD Noh Jin-Seok.
Cross Compiler를이용한 커널 컴파일 및 포팅
제4장 제어 시스템의 성능.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Samsung 복합기 사용 방법 (공용PC)
플립플롭, 카운터, 레지스터 순서회로 플립플롭 카운터 레지스터.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
논리회로 설계 및 실험 5주차.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
제9장 C 프로그래밍 환경 TOPCIT (Test of Practical Competency in IT)
웹서버 기능으로 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
7주차 실습 FPGA 보드 사용법.
Homework 7… 마지막 수업시간까지 (실습) 매개변수로 입력 받아 처리할 수 있도록 수정해 보세요
Fucntion 요약.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Canary value 스택 가드(Stack Guard).
( Windows Service Application Debugging )
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
DK-128 개발환경 설정 아이티즌 기술연구소 김태성 연구원
DK-128 개발환경 설정 아이티즌 기술연구소
제 5장 제어 시스템의 성능 피드백 제어 시스템 과도 성능 (Transient Performance)
DK-128 직렬통신 실습 아이티즌 기술연구소
UNIT 02 Microprocessor 로봇 SW 교육원 조용수.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
GDB - GNU Debugger 김진용.
논리회로 설계 및 실험 4주차.
농구 로봇 따라해 보기.
TVM ver 최종보고서
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
논리 회로 실험 2주차 담당 교수 : 전희성 담당 조교 : 강명수.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
인하공업전문대학 (2018-2학기) ATmega128 마이크로 프로세서 정보통신과 박기식 교수.
CODE INJECTION 시스템B 김한슬.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
핸드터미널 조작 및 S/W 업그레이드 통신 확인하기.
엑셀 리포트를 웹 클라이언트에서 사용시 설정 방법
ARP.
Progress Seminar 양승만.
Presentation transcript:

디버깅 환경 및 방법 Lecture #14

강의 순서 Logic Analyzer, Background Debug Mode JTAG (Joint Test Action Group), Debug Monitor ROM Emulator, ICE (In-Circuit Emulator) GNU Debugger (Gdb)

Logic Analyzer 하드웨어 디버깅 도구로 시스템에 영향을 주지 않고 실시간 분석 가능 하드웨어 회로의 수십 혹은 수백 지점으로부터 읽은 신호(0 혹은 1)를 분석하여 화면에 display함 logic analyzer의 주요 기능 timing 모드: 각 지점의 timing 관계를 알 수 있음 state 모드: 시스템의 상태를 알아낼 수 있음 (disassembler 사용) logic analyzer의 한계 target 시스템과의 연결 시에 물리적인 한계가 있음 프로세서 register 및 memory 내용을 직접 읽을 수 없음 프로세서가 cache를 사용하면 버스에 변화가 나타나지 않으므로 분석이 힘듦

Logic Analyzer - 그림 timing 모드 state 모드 logic analyzer

Background Debug Mode 최근의 프로세서들은 프로세서 내에 디버깅을 용이하게 하기 위한 추가적인 회로와 디버깅 단자를 가지고 있음 이 디버깅 단자를 통하여 host 시스템과 target 시스템이 통신하면서 프로그램을 디버깅함 Background Debug Mode의 기능 register 및 memory 내용을 읽거나 변경함 breakpoint를 설정하고 step 수행을 지원

JTAG (Joint Test Action Group) target 보드에 장착된 칩의 핀(cell)들을 host에서 연결된 4~5개의 선을 통하여 직렬 방식(shift-register)으로 연결하여 테스트하는 방법 JTAG 표준은 IEEE에 의하여 채택되었음 - IEEE 1149 Standard Test Access Port and Boundary-Scan Architecture 프로세서(CPU)의 상태와 상관없이 target 보드에 장착된 모든 칩의 외부 핀을 구동시키거나 값을 읽을 수 있는 기능을 제공 소프트웨어 개발자는 flash memory를 fusing할 때도 JTAG을 사용

JTAG cell의 연결 각 JTAG cell은 해당 칩의 한 단자와 대응됨 JTAG cell의 연결은 긴 shift-register를 형성함 칩 cell JTAG connector 입력 출력 target 보드

Debug Monitor target 시스템의 ROM에 상주하는 디버깅 소프트웨어 host 시스템의 debugger는 serial 혹은 Ethernet 포트를 통하여 target 시스템의 debug monitor와 통신한다 debug monitor가 host에 제공하는 디버깅 기능 target의 memory 및 register 값 변경 program의 수행 breakpoint의 설정

ROM Emulator target 시스템의 ROM 소켓을 host의 serial, Ethernet 혹은 USB 포트에 연결하여 host에서 target 시스템의 ROM을 대치하는 memory를 제공 - target 시스템의 통신 포트를 사용 않음 ROM emulator가 제공하는 디버깅 기능 memory 및 register의 값을 변경 breakpoint 설정 single step 수행

In-Circuit Emulator (ICE) target 보드의 프로세서 및 memory 등을 대체하여 실험할 수 있는 디버깅 도구 - ICE에 내장된 프로세서와 memory 사용 target 시스템 프로세서 및 memory에 문제가 있을 때에도 시스템을 실행시켜 개발하면서 디버깅할 수 있음 memory 대체, 실행 제어, 추적 기능을 밀접하게 연결시켜 최상의 디버깅 능력을 제공함

Gdb - GNU Debugger Gdb(GNU Debugger)는 어떤 프로그램이 수행되는 도중 그 프로그램 내에서 어떤 일이 일어나는 지를 볼 수 있게 해 준다 프로그램을 수행시킨다 어떤 특별한 조건에서 프로그램의 수행을 stop시킨다 프로그램이 stop된 상태에서 그 프로그램의 내부를 볼 수 있다 프로그램의 일 부분을 수정한다 stop된 프로그램을 continue시킨다

Gdb - 시작 및 종료 디버깅 하기 위한 컴파일 옵션 Gdb 시작 - Gdb prompt "(gdb)" 가 나옴 Gdb 종료 $ gcc -g prog.c Gdb 시작 - Gdb prompt "(gdb)" 가 나옴 $ gdb prog 특정 프로그램을 디버깅 한다 $ gdb prog core 특정 프로그램 및 core 파일을 디버깅 한다 $ gdb prog pid 현재 수행 중인 프로그램(프로세스 번호)를 디버깅 한다 $ gdb --args prog arg1 arg2 ... 인수를 사용하는 프로그램을 디버깅 한다 Gdb 종료 quit 혹은 q 혹은 ^D

Gdb - 프로그램 run 프로그램 run 인수 주면서 프로그램 run 이미 수행 중인 프로세스 디버깅 시작 및 종료 run arg1 arg2 ... 이미 수행 중인 프로세스 디버깅 시작 및 종료 attach pid detach

Gdb - breakpoint 설정 break function 혹은 break filename:function break linenum 혹은 break filename:linenum 현재 위치에서 상대적 위치에 breakpoint 설정 break +offset 혹은 break -offset 조건 breakpoint 설정 break ... if cond breakpoint 설정 지점 보기 info breakpoints 참고: breakpoint는 프로그램의 수행을 stop시키는 지점

Gdb - watchpoint 설정 watch expr rwatch expr awatch expr 프로그램에 의하여 expr이 써지면(write) breakpoint 형성 watch expr 프로그램에 의하여 expr이 읽혀지면(read) breakpoint 형성 rwatch expr expr이 써지거나(write) 혹은 읽혀지면(read) breakpoint 형성 awatch expr 설정된 watchpoint 보기 info watchpoints 참고: watchpoint는 특정 식의 값이 변경되거나 읽혀질 때 프로그램의 수행이 stop하는 특별한 breakpoint임

Gdb - continue, step, until, finish stop된 프로그램의 수행 continue [ignore-count] c [ignore-count] stop된 프로그램의 한 단계 수행 step step count 프로그램의 특정 지점까지 수행하고 stop until location u location 현재 수행 중인 함수의 수행을 끝내고 stop finish

Gdb - 스택 보기 backtrace 혹은 bt backtrace n 혹은 bt n up n // 오래된 프레임 방향으로 스택 전체 보기 backtrace 혹은 bt backtrace n 혹은 bt n 스택 프레임의 선택 up n // 오래된 프레임 방향으로 down n // 최근 프레임 방향으로 현재 선택된 프레임 정보 보기 info frame info f

Gdb - 소스 파일 점검 list linenum list function list list - edit number 소스 라인 프린트 list linenum list function list list - 소스 파일 편집 edit number edit filename:number edit function edit filename:function

Gdb - 데이터 값 보기 print expr print /f expr // /f는 format(예: /d /o /x) expression 값 보기 print expr print /f expr // /f는 format(예: /d /o /x) 메모리 값 보기 x addr x /nfu addr // n은 갯수, f는 format, u는 단위(예: b, h. w) register 값 보기 info registers // register 이름 보기(floating-point 제외) info all-registers // register 이름 보기 print $register

Gdb - symbol table 보기 info address symbol info symbol address 심볼 주소 보기 info address symbol 주소에 있는 심볼 이름 보기 info symbol address expression의 type 보기 ptype expr 어떤 함수 내의 모든 심볼 이름 보기 info scope function

Gdb - 프로그램 수정 print x=4 jump linespec jump *address signal signal 변수 값 수정 print x=4 다른 곳으로 jump jump linespec jump *address 프로그램에 signal 보내기 signal signal 함수 부르기 call expr 함수에서 return return expr

Gdb - remote debugging 환경 target - gdbserver 및 디버깅할 프로그램의 binary 필요 $ gdbserver host:port prog ... $ gdbserver /dev/ttya prog ... host - gdb 및 디버깅할 프로그램의 binary(unstripped) 필요 $ gdb (gdb) file prog (gdb) target remote host:port 혹은 target remote /dev/ttya (gdb) ...