Debugging Applications By John Robbins Part I 최상호 Ensoa consulting Group

Size: px
Start display at page:

Download "Debugging Applications By John Robbins Part I 최상호 Ensoa consulting Group"

Transcription

1 Debugging Applications By John Robbins Part I 최상호

2 목차 목차 1 장. Bugs : Where They Come From and how You Solve Them? 2 장. Getting Started Debugging 3 장. Debugging During Coding 4 장. How Do Debuggers Work? 5 장. Power Debugging with the Visual C++ Debugger 6 장. Power Debugging with x86 Assembly Language and the visual C++ Disassembly Window 7 장. Power Debugging with Visual Basic Debugger 8 장. Finding Source and Line Information with Just a Crash Address. 2

3 목차 목차 9 장. Crash Handlers 10 장. Debugging Windows2000 Services and DLLs That Load into Services. 11 장. Multi-Machine, Multi-process Tracing 12 장. Multi-Threaded Deadlocks 13 장. Automated Testing 14 장. Limited OutputDebugString Calls 15 장. The Debug C Run-Time Library 3

4 목차 목차 1 장. 버그 : 어디서발생하고어떻게해결할것인가? 2 장. 디버깅시작하기 3 장. 코딩과디버깅병행하기 4 장. 디버거의동작원리 5 장. Visual C++ 디버거를이용한강력한디버깅 6 장. 어셈블리어와 Visual C++ Disassembly 창을이용한강력한디버깅 7 장. Visual Basic 디버거를이용한효과적인디버깅 8 장. Crash 주소만으로소스위치찾아내기 4

5 목차 목차 9 장. Crash 핸들러 10 장. Windows 2000 서비스와서비스안에서동작하는 dll 디버깅하기. 11 장. Multi-Machine, Multi-process Tracing 12 장. 다중스레드의병목현상 13 장. 테스트자동화 14 장. OutputDebugString 제한하여사용하기 15 장. The Debug C Run-Time Library 5

6 2 장. 디버깅시작하기 목차 1. Assert, Assert, Assert, and Assert 2. Trace, Trace, Trace and Trace 3. Comment, Comment, Comment and Comment 4. Trust Yourself, But Verify (Unit Testing) 5. Summary 6

7 소개 7

8 소개 8

9 소개 9

10 3 장. 코딩과디버깅병행하기 목차 1. Assert, Assert, Assert, and Assert 2. Trace, Trace, Trace and Trace 3. Comment, Comment, Comment and Comment 4. Trust Yourself, But Verify (Unit Testing) 5. Summary 10

11 소개 assert ASSERT _ASSERT, _ASSERTE ASSERT_KINDOF ASSERT_VALID 11

12 소개 12

13 4 장. 디버거의동작원리 목차 1. Windows 디버거의종류 2. Debugbee를위해지원하는 Windows OS 기능 3. MinDBG : 간단한 Win32 디버거 4. WDBG : 실제로쓸만한디버거 5. 자기고유의디버거를만들고싶다면.. 6. WDBG 이후에는? 13

14 4-1. 소개 저자가직접제작한디버거 용어정리 MinDBG : 최소기능을수행하는디버거 WDBG : 실제로쓸만한디버거 Debuger( 디버거 ) : 디버깅관계속에서다른프로세스를제어하는프로세스. Debuggee( 디버그대상 ) : 디버거안에서실행되는프로세스. 디버거를 부모프로세스, Debuggee를 자식프로세스 라고도함. 14

15 4-2. Windows 디버거의종류 (1/2) Windows OS 에서는두가지형태의디버거가존재한다. 사용자모드 (User-Mode) 디버거커널모드 (Kernel-Mode) 디버거 사용자모드디버거 사용자가만든프로그램을디버깅한다. 대체로고유의 GUI를갖는다. 예 : Visual C++ 디버거 Win32 Debugging API를사용한다. Win32 Debugging API를사용한다는것은디버거와 Debuggee가실행생명주기를같이하는공생관계를갖는다는것을의미한다. MS 또는 Sun의 Java VM, MS Scripting Engine, MS Visual Basic p-code 인터프리터등은자체고유의디버깅환경을제공한다. MSDN, Debugging and Profiling Java Applications MSDN, Active Script Debugging API Objects 15

16 4-2. Windows 디버거의종류 (2/2) 커널모드디버거 CPU와 OS 사이에디버거가위치하여 OS의동작자체를멈추게할수있다. 타이밍, 동기화관련문제를해결하고자할때유용하다. 커널모드디버거로는사용자코드를디버그할수없다. ( 예외 : SoftICE) 디바이스드라이버개발자들이주로사용한다. 종류 WDEB386 ( Windows Debugger) i386kd (the Kernel Debugger) WinDBG SoftICE WDEB386 Platform SDK에배포되는 Windows 98 커널모드디버거 Windows 98 virtual device driver (VxD) 개발시에유용. 두대의컴퓨터와널모뎀케이블을이용. 한대에서커널모드로실행하며다른한대로디버그명령수행. 16

17 4-2. Windows 디버거의종류 (3/2) i386kd Windows 2000 OS 내의 NTOSKRNL.EXE 파일이커널모드디버깅을지원한다. OS 의 Release/Dubug 빌드버전모두사용가능하다. 커널모드디버깅기능을사용하려면, BOOT.INI 파일에다음의내용을추가. /DEBUG 옵션추가 기본포트인 COM1 포트대신다른포트를사용하려면 /DEBUGPORT 옵션사용. 두대의컴퓨터와널모뎀케이블을이용. Windows 2000 OS 내부의상태를알고자할때유용. 콘솔형프로그램이라서소스레벨디버깅에어려움이많아잘사용되지않음. 참고 Using Microsoft s x86 Kernel Debugger MSDN, I386KD.EXE 를사용하여 Windows NT MEMORY.DMP 파일을로드하는방법 17

18

19 4-2. Windows 디버거의종류 (4/2) WinDBG Platform SDK 에포함되어배포되는하이브리드형디버거 사용자모드디버깅과커널모드디버깅을동시에모두제공하지는않는다. i386kd 와동등한기능에 GUI 를갖추고있어장치드라이버개발시에유용하다. Visual C++ 내장디버거보다더강력한기능을제공하지만사용이좀어렵다. 그러나 시간을들여배울만한가치가있다. 제공되는 Command 창으로 WinDBG 확장기능을이용해사용자고유의명령을지 시할수있다. Windows 2000 또는 WindowsNT 에서 Dr.Watson 이제작한덤프파일을읽을수있 다. 이는 crash 된프로그램의정확한상태가기록된덤프파일을디버거로읽어어느 부분에서 crash 가발생했는지확인할수있게한다. 참고 MSDN, Debugging Tools for Windows MSDN, WinDbg Debugger MSDN, Debugger Extension MSDN, Bugslayer (December,1999. January, 2000) 19

20 4-2. Windows 디버거의종류 (5/2) SoftICE 한대의컴퓨터에서수행되는유일한상용의커널모드디버거 CPU와 OS사이에위치하며 OS를멈추게함으로써응용프로그램을사용자모드에서디버깅할수있다. 다중쓰레드환경의프로그램디버깅에효과적이다. 예 ) SendMessageTimeOut API 를한레벨씩실행시켜가며디버깅. 프로세스간디버깅을용이하게한다. 예 ) out-of-process의 COM 프로그램의디버깅. 메모리영역에 4군데의중단점을설정하여메모리의특정번지에접근하는프로그램의실행을멈추게할수있다. OS에서일어나는각종현상들 ( 동기화이벤트들의상태, HWND 정보, 쓰레드정보, ) 을볼수있는많은명령어를제공한다. 참고 Compuware, SoftICE for Devpartner SoftICE the Basic ( 간단한설치및사용 ) CodeGuru, Getting Started with SoftICE 20

21 디버깅관련질문 Crash가발생하면동작하는기본디버거의변경은어떻게하나? Windows 98 WIN.INI 파일내의 [AeDebug] 섹션에지정 Windows 2000 Auto 항목 : 값이 0이면 Crash 발생시디버그할지를묻는대화상자가뜬다. 1이면자동으로디버거가실행된다. Debugger 항목 : OS가실행시키는디버거이름이기록되어있다. 프로세스에접근 (attach) 가능한디버거이면된다. UserDebuggerHotKey 항목 : 디버거로진입하고자할때사용하는지정단축키. 21

22 디버깅관련질문 Crash 가발생하면동작하는기본디버거의변경은어떻게하나? Visual C++ 디버거를 OS 기본디버거로설정하려면. 22

23 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (1) Windows 2000 힙메모리체크기능 (2) 프로세스실행시자동으로디버거실행하기 (3) 디버그용단축키 23

24 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (1) Windows 2000 힙메모리체크기능 디버거에서실행되는프로그램은 Windows 2000 OS가디버그힙메모리체크를수행한다. 이힙메모리는 C 런타임라이브러리의디버그힙이아니고 HeapCreate API에의해생성된다. 프로세스들이 Windows 2000의힙을폭넓게사용하기때문에힙과관계된정보를살펴볼필요가있다. 디버그힙메모리체크옵션이설정되면 (GFLAGS.EXE 사용 ) OS는 HeapFree API가호출될때힙을체크한다. 디버거에서는 HeapFree API 가호출될때마다 DebugBreak 함수를호출한다. 디버거상에서실행하지않으면별다른이상없이정상종료하게된다. 참고 MSDN, Matt Pietrek, Under the Hood, Sep. 1999, MSJ. 24

25 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (1) Windows 2000 힙메모리체크기능 : 힙메모리를잘못사용하는예제 void main(void) { // Create an operating system heap. HANDLE hheap = HeapCreate ( 0, 128, 0 ) ; // Allocate a 10-byte block. LPVOID pmem = HeapAlloc ( hheap, 0, 10 ) ; // Write 12 bytes to a 10-byte block (an overwrite). memset ( pmem, 0xAC, 12 ) ; // Allocate a new 20-byte block. LPVOID pmem2 = HeapAlloc ( hheap, 0, 20 ) ; // Underwrite 1 byte on the second block. char * punder = (char *)( (DWORD)pMem2-1 ); *punder = 'P' ; // Free the first block. This call to HeapFree will trigger a // breakpoint from the operating system debug heap code. HeapFree ( hheap, 0, pmem ) ; // Free the second block. Notice that this call won't report a problem. HeapFree ( hheap, 0, pmem2 ) ; // Free a bogus block. Notice that this call won't report a problem. HeapFree ( hheap, 0, (LPVOID)0x1 ) ; HeapDestroy ( hheap ) ; } 25

26 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (1) Windows 2000 힙메모리체크기능 : 힙메모리를잘못사용한결과 26

27 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (1) Windows 2000 힙메모리체크기능 : GFLAGS.EXE 유틸리티파일 (Debugging SDK를설치해야함 ) OS 가어떤 DLL 들을로드하는지볼수 있다. 또한이 DLL 들을어떻게 swapping 하는가확인할수있다. * 실행이미지마다각각의설정값을저 장할수있다. 27

28 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (1) Windows 2000 힙메모리체크기능 : Show Loader Snaps 옵션설정후 28

29 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (2) 프로세스실행시자동으로디버거실행하기 가장디버깅하기어려운타입은타프로세스에의해실행되는 Windows 2000 서비스나 COM out-of-process 서버의경우이다. 프로세스를디버깅하려면 DebugBreak API를사용하는데다음의두경우에는제대로 API가실행되지않는다. (1) Windows 2000 서비스 : DebugBreak API에의해디버거가실행되는동안서비 스타임아웃에걸려서비스가종료된다. (2) COM : DebugBreak API가호출되면 COM의에러핸들링루틴이이를오류로인식해 COM 서버를종료시킨다. 29

30 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (2) 프로세스실행시자동으로디버거실행하기 Windows 2000 OS에서는이를방지하고프로세스시작시제일먼저디버거를실행시키도록하는두가지방법을제공한다. (1) GFLAGS.EXE 유틸리티파일이용 : Image File 탭의 Debugger 항목체크후디버거의위치를입력한다. (2) 레지스트리변경 : Image File Execution Options 키밑에프로세스이름을갖는키를새로만들고그밑에디버거의위치를새항목으로만든다. 30

31 4-3. Debuggee 를위해지원하는 Windows 2000 OS 기능 (3) 디버그용단축키 ( 핫키 ) 콘솔형프로그램 Ctrl+C 또는 Ctrl+Break 키를누르면 DBG_CONTROL_C 라는특별한예외상황이발 생한다. DBG_CONTROL_C 예외상황은바로디버거로진입하여디버깅을시작할수있도록 한다. GUI 형프로그램 디버거에서프로세스를실행후 F12 키를누르면 DebugBreak API 를바로호출한다. F12 키에다른기능이할당되어있더라도디버그를수행한다. GFLAGS.EXE 유틸리티파일이용 : Image File 탭의 Debugger 항목체크후디버거 의위치를입력한다. WindowsNT 4 에는기본키가 F12 로고정되어있지만 Windows 2000 에서는레지스 트리키값을변경하여기본키를변경할수있다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\Current Version\AeDebug 키밑의 UserDebuggerHotKey 키값을원하는 VK_* 값으로설정한다. 31

32 5 장. Visual C++ 디버거를이용한강력한디버깅 목차 1. 진보된중단점기능과그사용법 2. 원격디버깅 3. 팁과꼼수 4. 요약 32

33 5-1. 진보된중단점기능과그사용법 1. Advanced Breakpoint Syntax and Location Breakpoints 2. Quickly Breaking on Any Function 3. Breakpoints on System or Exported Functions 4. Location Breakpoint Modifiers 5. Global Expression and Conditional Breakpoints 6. Windows Message Breakpoints 33

34 5-1. 진보된중단점기능과그사용법 중단점을표시하려면원하는소스위치로커서를이동한후단지중단점추가 / 삭제버튼을누르기만하면된다. 이를디버거세계의용어로소스위치에중단점을설정 (setting a location breakpoint) 한다고한다. 소스의특정위치에중단점을삽입하는이행동은단순하지만현대와고대의디버깅의시대를구분하는중요한의미를갖는다. 고대의디버깅시대 중단점이라는것자체가없었다. Crash가발생하기를기다렸다가수십장의 16진수메모리덤프문서를보는것이디버깅의전략이었다. 디버깅을위해출력문 (Trace) 을삽입하고잘실행되기를기대하는믿음뿐이었다. 디버깅의르네상스시대 상위수준의언어가개발되었지만중단점을삽입하여단지어셈블리어수준의디버깅이가능했다. 지역변수를직접보거나소스를보면서디버깅을할수가없었다. 34

35 5-1. 진보된중단점기능과그사용법 현대의디버깅 복잡한개발툴이만들어지면서비로소소스라인에중단점을삽입하여지역변수등을보기쉽게변환된형태로관찰이가능해졌다. 소스위치기반의중단점삽입이라는단순하지만막강한기능만으로도 99.6% 의디버깅관련문제들을해결할수있다. 중단점삽입의문제점 중단점삽입하여변수를지켜보는방식은금방지루해진다. 10,000번을실행하는 For 구문안에중단점을걸어 9,999번째루프에서의변수값을관찰한다면..? 대안은? 진보된중단점기능을이용하여시간과노력을줄인다. 특정한루프횟수에도달했을때, 표현식이조건에맞을때, 특정변수나메모리값이변경될때에중단점에진입하도록한다. 35

36 5-1. 진보된중단점기능과그사용법 (1) Advanced Breakpoint Syntax and Location Breakpoints 복잡한개발툴이만들어지면서비로소소스라인에중단점을삽입하여지역변수등을보기쉽게변환된형태로관찰이가능해졌다. 소스위치기반의중단점삽입이라는단순하지만막강한기능만으로도 99.6% 의디버깅관련문제들을해결할수있다. 중단점삽입의문제점 중단점삽입하여변수를지켜보는방식은금방지루해진다. 10,000번을실행하는 For 구문안에중단점을걸어 9,999번째루프에서의변수값을관찰한다면..? 대안은? 진보된중단점기능을이용하여시간과노력을줄인다. 특정한루프횟수에도달했을때, 표현식이조건에맞을때, 특정변수나메모리값이변경될때에중단점에진입하도록한다. 36

37 5-1. 진보된중단점기능과그사용법 Visual C++ 사용예제 : AdvancedBP.dsw (1) 특정메모리번지에서중단점작동 37

38 5-1. 진보된중단점기능과그사용법 Visual C++ 사용예제 : AdvancedBP.dsw (2) 특정소스위치에서중단점작동 ( 가장일반적인사용의예 ) 38

39 5-1. 진보된중단점기능과그사용법 Visual C++ 사용예제 : AdvancedBP.dsw (3) 특정루프조건에서중단점작동 ( 횟수지정 ) 39

40 5-1. 진보된중단점기능과그사용법 Visual C++ 사용예제 : AdvancedBP.dsw (4) 특정변수의조건을만족할때중단점작동 40

41 5-1. 진보된중단점기능과그사용법 Visual C++ 사용예제 : AdvancedBP.dsw (5) 특정변수값이변경될때중단점작동 41

42 5-1. 진보된중단점기능과그사용법 (2) Quickly Breaking on Any Function 소스파일을일일이뒤지지않고바로 BreakAt 에디트박스에중단점을삽입할함수이름을입력한다. 함수이름을잘못입력하면디버거로진입시메시지박스가표시된다. C++ 을사용할경우에는클래스한정자 (Class Qualifier) 까지입력한다. Ex) MFC의 CDialog 클래스의 OnOK() 함수에대한중단점은 CDialog::OnOK 로입력. 오버로딩된함수의중단점삽입시에는모호성을해결하기위한메시지박스가표시된다. 42

43 5-1. 진보된중단점기능과그사용법 (3) Breakpoints on System or Exported Functions MS Windows 2000이상에서만시스템 DLL의함수에중단점을위치시킬수있다. Windows 98에서는쓰기중복사금지 (copy-on-write protection) 기능이없기때문에중단점을위치시킬수없다. 방법 : COFF (Common Object File Format) 파일을로드하고외부로추출 (export) 하기위해다음과같이설정을한다. 43

44 5-1. 진보된중단점기능과그사용법 (3) Breakpoints on System or Exported Functions 예 : KERNEL32.DLL 내부의 LoadLibrary 함수에중단점을걸경우 Visual C++ 디버거는완전한심볼정보를갖는파일내용이앞서는계층적인심볼정보접근체계를갖는다. 즉, 소스라인, 함수, 변수, 타입등의모든정보가있는 PDB(Program Database) 파일이항상가장앞에위치한다. 다음에공용함수심볼의정보만을담는 COFF/DBG 파일이위치한다. 마지막으로의사심볼 (pseudo symbol) 형태로외부에노출된 (exported) 이름들이맨끝에위치한다. Dll 이완전한심볼정보를갖고있는경우 44

45 5-1. 진보된중단점기능과그사용법 (3) Breakpoints on System or Exported Functions 예 : KERNEL32.DLL 내부의 LoadLibrary 함수에중단점을걸경우 ( 계속 ) Windows 2000 용심볼설치를권장한다. 공용심볼에대한정보만을볼수있지만그래도스택 /Disassembly 윈도우에서현재어느함수에있는지정도는파악가능. 심볼정보를로드할수없다면, DUMPBIN.EXE 유틸리티를활용한다. 사용법 : dumpbin /EXPORTS kernel32.dll ANSI 용함수 ( 내부적으로는 LoadLibraryW 가다시호출된다.) UNICODE 용함수 c:\windows\system32 dumpbin /exports /out:c:\result.txt kernel32.dll 45

46 5-1. 진보된중단점기능과그사용법 (3) Breakpoints on System or Exported Functions 예 : KERNEL32.DLL 내부의 LoadLibrary 함수에중단점을걸경우 ( 계속 ) 함수호출규약을확인한다. 이름장식 (name decoration) 에의해함수이름을만드는데 stdcall 에의해호출되는함수는함수이름앞에 _ 와스택에들어간바이트수 ( 인텔 CPU의경우함수파라미터의개수 * 4 bytes) 를적는다. 예 : 입력파라미터가하나인 LoadLibraryW 함수 -> _LoadLibraryW@4 예 : 입력파라미터가열개인 CreateProcess 함수 -> _CreateProcess@40 예 : 입력파라미터가없는 TlsAlloc 함수 -> _TlsAlloc@0 그러므로, 진보된중단점다이얼로그창에다음과같이입력한다. {,,KERNEL32.DLL}_LoadLibraryW@4 46

47 5-1. 진보된중단점기능과그사용법 (4) Location Breakpoint Modifiers 디버거의중단점을좀더 스마트 하게사용하게하는루프횟수지정 (skip counts), 조건표현식 (conditional expressions), 변수값변화감지 (variable changes) 기능을사용하자. Skip Counts 지정하기 47

48 5-1. 진보된중단점기능과그사용법 (4) Location Breakpoint Modifiers Skip Counts 활용하기 : 루프실행중 crash가발생했는데몇번째루프인지알수없을경우. 전체루프실행횟수보다더큰숫자를 Skip Counts 에입력한다. 프로그램을디버그모드에서다시실행시키면 crash 가발생하는데, 이때 Breakpoints 창을열면남은루프횟수가표시되어있다. 20 번째루프까지중단점을무시하도록설정했는데 15 번을남겨놓고서 crash 됨. 즉, 5 번째루프에서에러발생. 48

49 5-1. 진보된중단점기능과그사용법 (4) Location Breakpoint Modifiers Conditional Expression 사용하기 위치중단점은입력한조건식이참일때에만동작한다. 조건식사용상의규칙 1. C방식의비교연산자만을사용할수있다. 2. 조건식내에서함수호출은불가능하다. 3. 조건식내에서매크로값사용은불가능하다. 4. 변수이름및포인터를직접사용할수있고캐스팅도가능하다. Conditional Expression 활용하기 : 스트링을조건식에서사용하기 (szbuff[0]== p ) && (szbuff[1]== a ) && (szbuff[2]== m ) Conditional Expression 활용하기 : 의사레지스터를조건식에서사용하기 특정쓰레드동작에대한조건식 특정에러 (ERROR_FILE_NOT_FOUND) 에대한조건식 49

50 5-1. 진보된중단점기능과그사용법 (4) Location Breakpoint Modifiers Conditional Expression 활용하기 : 의사레지스터를조건식에서사용하기 ( 계속 ) 조건식에서사용할수있는의사레지스터 50

51 5-1. 진보된중단점기능과그사용법 (4) Location Breakpoint Modifiers Variable Changes 사용하기 변수의변화감지기능은위치중단점을사용할때에만동작한다. 지켜보고자하는변수가참조하는메모리바이트수 실행결과 51

52 5-1. 진보된중단점기능과그사용법 (5) Global Expression and Conditional Breakpoints 전역변수나조건표현식에의한중단점은 CPU의디버그레지스터를이용해 4개까지설정할수있다. 디버그레지스터는 1,2,4바이트크기의메모리만을관찰할수있다. 초기화되지않은포인터를이용한메모리쓰기등의 wild write를수행하여무작위위치에서오류발생시등에활용가능하다. 전역변수의사용예 Ex.1) char 형전역변수의첫번째문자가 G 문자로변경될경우 ( 메모리위치 : 0x 번지 ) : 디버그표현식창에 *(char *) 0x == G Ex.2) long 형전역변수의값이변화될때 ( 메모리위치 : 0x004045A0) : 디버그표현식창에 *(long *)(0x004045A0) 입력. 52

53 5-1. 진보된중단점기능과그사용법 (5) Global Expression and Conditional Breakpoints 주의 : 디버그표현식에전역변수에대한식을쓸때에는포인터형태로기술해야한다. Long 형캐스팅을할경우항상 1 을기술. (CPU 의디버그레지스터가 double-word 크기만을참조할수있기때문 ) 53

54 5-1. 진보된중단점기능과그사용법 (6) Windows Message Breakpoints 특정윈도우메시지에대해서만중단점을걸고자할경우. SDK를이용하여윈도우프로그래밍을할경우에는 Break at WndProc 드롭다운박스에사용하는윈도우메시지가보여진다. 콤보박스에원하는메시지가없으면직접윈도우메시지숫자를입력한다. MFC를사용하는경우 : 내용추가필요 54

55 디버깅관련질문 왜중단점이사라지거나건너뛸까? 중단점을제대로사용하려면 Visual C++ IDE를꼭사용한다. 외부에서소스를수정할경우 One or more breakpoint are not positioned on valid lines. This breakpoints have been moved to the next valid line. 메시지가보인다. 디버거는중단점을항상아래방향으로이동시킨다. 따라서코드를임의로삭제하면문제가발생할수있다. 디버거가중단점을제대로동작시키지못하는대부분의경우는 LoadLibarary API를이용하여서명확히사용하지않는 DLL에중단점을걸었기때문이다. 따라서디버거가해당 DLL에대한심볼을제대로사용하도록 Additional DLLs 항목을설정해야한다. 컴파일러최적화기능을사용하면컴파일러가임의로코드를변경시킬수있기때문에중단점이제대로동작하지않을수있다. 55

56 디버깅관련질문 왜중단점이사라지거나건너뛸까? ( 계속 ) 사용하는 DLL 을명확히디버거에게알리기위한설정 56

57 5-2. 원격디버깅 원격디버깅의정의 사용자프로그램과디버깅을위한관련데이터 (a tiny debug stub) 와디버거가각각다른컴퓨터상에서 TCP/IP 를통해서로상호작용하는것. 원격디버깅이유용한경우 1) 중요한윈도우활성화코드를디버그해야할때 2) 화면그리기 (drawing/painting) 관련코드를디버그해야할때 3) 사용자프로그램이많은메모리사용을요구할때 4) Windows 98 OS 상에서디버그하고자할때 5) Visual C++ IDE 를모두설치함으로인해발생하는해당수행컴퓨터의환경변화를원치않을때. 참고 MSDN, Debugging Remote Applications MSDN 한글, 원격디버깅설치 서우석, 1394를이용한원격디버깅 57

58 5-2. 원격디버깅 (1) 중요한윈도우활성화코드를디버그해야할때 윈도우를활성화시키는 WM_SETFOCUS 메시지등을단계적으로디버그할경우. GUI기반의디버거와포커스전환이이루어져서프로그램을단계적으로실행시킬수없다. (2) 화면그리기관련코드를디버그해야할때 Microsft DirectX 를이요하는게임의디버깅. (3) 사용자프로그램이많은메모리를요구할때 최소사양을갖춘컴퓨터에서프로그램을디버깅할경우에는 Debug Build 버전도무겁다! (4) Windows 98 OS 상에서디버그하고자할때 원격디버깅시, 서로다른 OS에서도동작한다. Windows2000 OS상에서디버거동작이더원활하므로디버깅은 Windows 2000에서, 프로그램실행은 Windows 98에서. 58

59 5-2. 원격디버깅 (5) Visual C++ IDE를모두설치함으로인해발생하는해당수행컴퓨터의환경변화를원치않을때. 개발환경을구축함으로써시스템 DLL의버전의변경되어사용자프로그램과충돌하는 DLL Hell 을겪을경우. 내용추가필요! 59

60 5-2. 원격디버깅 주의 원격디버깅이끝나면 Visual C++ IDE를다시로컬디버깅상태로전환해야한다.( 원격디버깅관련설정은모든프로젝트에공통으로적용되므로 ) 네트워크부하에민감한시스템이나프로그램을사용하는경우 TCP/IP를사용하는 Visual C++ 디버거대신 WinDBG를사용한다.( 시리얼포트 / 널모뎀케이블이용 ) IEEE 1394 케이블을이용하는방법도있다! 60

61 5-3. 팁과꼼수 1. Setting Breakpoints 2. The Watch Window (1) Formatting Data and Expression Evaluation (2) Timing Code in the Watch Window (3) Calling Functions in the Watch Window (4) Expanding Your Own Types Automatically 3. The Set Next Statement Command 4. Debugging Visual Basic Compiled Code 61

62 5-3. 팁과꼼수 1. 중단점설정하기 소스라인,Disassembly 창외에도 Call Stack 창에서도중단점설정이가능하다. 깊게중첩된함수호출일경우유용하다. 설정 : Call Stack 창에서마우스오른버튼을누른다. Call Stack 창에서중단점설정 / 해제 중단점을추가한후제거하지말고대신 비활성화 상태로체크하라. 62

63 5-3. 팁과꼼수 2. Watch 창 Watch 창에서바로변수의값을변경할수있다. 조건표현식에서사용하였던표현방식을사용할수있다. ( 변수이름을직접입력도가능하다.) (1) 데이터와표현식표현형식을사용하여표시하기 63

64 5-3. 팁과꼼수 (1) 데이터와표현식표현형식을사용하여표시하기 Watch 창에, 를쓰고정해진각형식에따라덧붙인다. 응용 : COM 프로래밍시에 COM 메서드호출후그결과값을지켜보고자할때 -> Watch 이라고기술. (@EAX 레지스터에는함수리턴값이저장되고이를 HRESULT 포맷으로 Watch창에표시하게됨 ) 64

65 5-3. 팁과꼼수 (1) 데이터와표현식표현형식을사용하여표시하기 ( 계속 ) Formatting Symbols for Watch window Variables 65

66 5-3. 팁과꼼수 (1) 데이터와표현식표현형식을사용하여표시하기 ( 계속 ) Formatting Symbols for Watch Window Memory Dumps 66

67 5-3. 팁과꼼수 (1) 데이터와표현식표현형식을사용하여표시하기 ( 계속 ) 배열의값을 Watch Window 로살펴보기 배열이름다음에, 후관찰하고싶은배열의크기입력. Ex) plong,10 Window에표시. : 배열을가르키는포인터 plong 에대하여배열요소 10 개까지 Watch 배열의옵셋을지정하여표시할수도있다. Ex) (pbigarray+100,20) : pbigarray 포인터의 99 번째요소부터 20 개까지창에표시. Watch Window 는거의모든식을다표현할수있다. (2) Watch Window 에서의타이밍관련코드 레지스터를이용해측정할수있다. microsecond 단위의초를 milisecond로변환하고 10진수형태로표시한다. 67

68 5-3. 팁과꼼수 (3) Watch Window 에서함수실행하기 Visual Basic 에서의직접실행창처럼함수를직접실행시킬수있다. 변수이름과구별되도록 () 를꼭표시한다. 입력파라미터또는리턴값도모두표현할수있다. 68

69 5-3. 팁과꼼수 (3) Watch Window 에서함수실행하기 ( 계속 ) 함수실행시주의사항 단일쓰레드환경에서만실행시킬것. ( 멀티쓰레드환경에서실행할경우에는함수실행하고나서 Watch 창에서이를삭제해야함 ) 함수의실행시간이 20 초이내가되도록할것. 데이터확인을위한메모리읽기정도의용도로사용하고, 문제발생시에는 OutputDebugString 또는 printf 등의함수를이용할것. Watch Window 내의함수가실행되는경우 프로그램이실행되어중단점에도달할경우디버그중소스라인을한줄씩실행하는경우 Watch Window에서함수를입력 / 수정하고나서 Enter를치는순간프로그램실행중예외상황이발생하여디버거로진입하는순간 Watch Window 에서디버그함수를실행하고나면이를 Window 에서항상삭제하는 것이바람직하다. 69

70 5-3. 팁과꼼수 (4) 사용자정의데이터를자동으로 Watch Window 에서확장해서보여주기 내용추가필요 70

71 5-3. 팁과꼼수 3. 다음구문설정하기 (Set Next Statement) 명령 소스창과 Disassembly 창에서마우스오른버튼을누른후메뉴에서선택하여실행한다. 이는프로그램내에서다음실행점 (Instruction pointer) 를임의의위치로옮길수있다. 또는 CPU의 EIP 레지스터를직접수정하여같은효과를낼수도있다. 최적화된릴리즈빌드에서이기능을사용하려면 disassembly 창에서사용할것. 이명령으로실행점이변경되어실행될때스택에임시변수를만드는작업이수행될때는조심해야한다. 프로그램내부의상태를자주변경시키지않는코드에서사용하는것이바람직. If 구문등에서조건별로수행하는코드들을실행해보는단위테스팅시에유용하게쓰임. Run To Cursor 명령과함께조합해서사용. 71

72 5-3. 팁과꼼수 4. Visual Basic 의컴파일된코드디버깅하기 P-code로컴파일된 Visual Basic 코드는충분한타입정보를생성하지않기때문에디버깅이어렵다. Compuware 사의 SmartCheck 등의툴을사용하기도한다. 또는직접어셈블리어형태의 Visual Basic 코드를디버깅하는것이더쉽기도하다. (^.^) 생각보다어렵지않다.(?) PDB 파일을생성한다. 72

73 5-4. 요약 참고자료 MSDN, Visual C++ 디버깅관련자료 MSDN, 디버거관련자료 73

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

vi 사용법

vi 사용법 유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

WinDbg 사용법

WinDbg 사용법 WinDbg 사용법 본사이트내에서취득한모든문서나이미지, 기타정보의소유권은 하제소프트에있으며동의없는타사이트에의게재나배포, 상업적이용은불가합니다. 자료사용에관한문의는 webmaster@hajesoft.co.kr 로해주시기바랍니다. hajesoft Corp. 2005. Seoul. All Rights Reserved. 프로그램개발에서디버깅은전체개발의 50% 이상의비중을차지할정도로중요하다.

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드] System Programming Lab Week 1: Basic Skills for Practice Contents vi Editor 사용법 GCC 컴파일러사용법 Makefile 사용법 GDB 사용법 VI Editor Usage vi 모드 입력모드 : 실제문서를편집하는모드. 명령모드 : 키입력이바로명령이되는모드로서쓴내용을삭제하거나, 복사할때사용. ex 명령모드

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

Microsoft PowerPoint - 15-MARS

Microsoft PowerPoint - 15-MARS MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터

More information

WinDBG 실무

WinDBG 실무 주식회사하제소프트 (www.hajesoft.co.kr) 강사이봉석 과정소개 윈도우응용프로그램, 윈도우서비스프로그램, 윈도우디바이스드라이버를개발하는개발자들로하여금고급디버깅기술을제공하는 윈도우디버거 (WinDBG) 사용방법을익히게하여, 고급시스템프로그래머를양성하는데있습니다 윈도우디버거 (WinDBG) 를사용하는개발자는실무에서고급시스템프로그래머가갖추어야할중요한디버깅지식을습득함과동시에시간과비용을최대한아끼는프로그래밍습관과우수한결과물을만들어낼수있습니다

More information

No Slide Title

No Slide Title Copyright, 2001 Multimedia Lab., CH 3. COM object (In-process server) Eun-sung Lee twoss@mmlab.net Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea 0. Contents 1.

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이 gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이나왔다한다. Debugging을하는가장원초적방법은프로그램소스를눈으로따라가며, 머리로실행시켜논리적오류를찾아내는것이다.

More information

The_IDA_Pro_Book

The_IDA_Pro_Book The IDA Pro Book Hacking Group OVERTIME force (forceteam01@gmail.com) GETTING STARTED WITH IDA IDA New : Go : IDA Previous : IDA File File -> Open Processor type : Loading Segment and Loading Offset x86

More information

MPLAB C18 C

MPLAB C18 C MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

Visual Studio online Limited preview 간략하게살펴보기

Visual Studio online Limited preview 간략하게살펴보기 11월의주제 Visual Studio 2013 제대로파헤쳐보기! Visual Studio online Limited preview 간략하게살펴보기 ALM, 언제어디서나 연결된 IDE Theme와 Visual Design 편집기의강화된생산성기능들성능최적화및디버깅개선 Microsoft 계정으로 IDE에서로그인가능다양한머신사이에서개발환경유지다양한디바이스에걸쳐설정을동기화개선된

More information

PRO1_09E [읽기 전용]

PRO1_09E [읽기 전용] Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

<41736D6C6F D20B9AEBCADBEE7BDC42E687770> IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 - Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다.

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager are trademarks or registered trademarks of Ari System, Inc. 1 Table of Contents Chapter1

More information

슬라이드 1

슬라이드 1 CCS v4 사용자안내서 CCSv4 사용자용예제따라하기안내 0. CCS v4.x 사용자 - 준비사항 예제에사용된 CCS 버전은 V4..3 버전이며, CCS 버전에따라메뉴화면이조금다를수있습니다. 예제실습전준비하기 처음시작하기예제모음집 CD 를 PC 의 CD-ROM 드라이브에삽입합니다. 아래안내에따라, 예제소스와헤더파일들을 PC 에설치합니다. CD 드라이브 \SW\TIDCS\TIDCS_DSP80x.exe

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

DCL Debugging Support

DCL Debugging Support DCL Runtime Debugging Support 2005.06.08 김대중 http://www.sysdeveloper.net/daejung 요약 버그없는소프트웨어를개발하는것은결코쉬운일이아니다. 대부분의상업적개발도구들이소스프로그램을추적할수있도록하는디버깅환경을제공하고있고이러한것들은단위함수들을디버깅하는데있어서매우유용한건사실이다.

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

PCServerMgmt7

PCServerMgmt7 Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network

More information

This is a title of the whitepaper

This is a title of the whitepaper Delphi XE: Delphi 7 이후의 새로운디버그기능들 Nick Hodges, 박지훈. 임프 2010 년 9 월 Americas Headquarters EMEA Headquarters Devgear 100 California Street, 12th York House 서울특별시반포 1 동 743-14 Floor 18 York Road 4 층 데브기어 San

More information

슬라이드 1

슬라이드 1 Delino EVM 용처음시작하기 - 프로젝트만들기 (85) Delfino EVM 처음시작하기앞서 이예제는타겟보드와개발홖경이반드시갖추어져있어야실습이가능합니다. 타겟보드 : Delfino EVM + TMS0F85 초소형모듈 개발소프트웨어 : Code Composer Studio 4 ( 이자료에서사용된버전은 v4..입니다. ) 하드웨어장비 : TI 정식 JTAG

More information

Deok9_PE Structure

Deok9_PE Structure PE Structure CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 1. PE > 1) PE? 2) PE 3) PE Utility

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우. 소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423

More information

Microsoft PowerPoint - chap-02.pptx

Microsoft PowerPoint - chap-02.pptx 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 컴퓨터프로그래밍기초 프로그램작성과정 에디터 (editer) 컴파일러 (compiler) 링커 (linker) 로더 (loader) 소스파일 test.c 오브젝트파일 test.obj 실행파일 test.exe 통합개발환경 (IDE) 컴퓨터프로그래밍기초 2 프로그램작성단계 편집 (edit) 에디터를이용하여원하는작업의내용을기술하여소스코드작성

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

중단점활용하기 중단점 (Breakpoint) 의개념은프로그램의특정명령어바로이전에실행을임의로중단하는것으로의 매우간단합니다. 중단점의구현은소프트웨어또는하드웨어로가능합니다. 중단점사용은버그를찾아내고제거하는데매우쉽고간단한방법이며복잡한조합으로사용할수있습니다. 소프트웨어개발자들은

중단점활용하기 중단점 (Breakpoint) 의개념은프로그램의특정명령어바로이전에실행을임의로중단하는것으로의 매우간단합니다. 중단점의구현은소프트웨어또는하드웨어로가능합니다. 중단점사용은버그를찾아내고제거하는데매우쉽고간단한방법이며복잡한조합으로사용할수있습니다. 소프트웨어개발자들은 중단점활용하기 중단점 (Breakpoint) 의개념은프로그램의특정명령어바로이전에실행을임의로중단하는것으로의 매우간단합니다. 중단점의구현은소프트웨어또는하드웨어로가능합니다. 중단점사용은버그를찾아내고제거하는데매우쉽고간단한방법이며복잡한조합으로사용할수있습니다. 소프트웨어개발자들은중단점기능없이개발이어려울정도이며, 매우자주사용하는디버깅기능입니다. 이글에는모든개발자들이 IAR

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4> 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)

More information

목차 다운로드및설치 1. 다운로드 2. 설치 3. MPLAB TM X IDE 데스크탑 기본사용법 1. 새프로젝트만들기 2. 프로젝트속성 (Properties) 조정 3. 디버거, 프로그램, 프로그램언어옵션설정 4. 프로그램언어위치설정 5. 기타툴옵션설정 6. 새파일만들

목차 다운로드및설치 1. 다운로드 2. 설치 3. MPLAB TM X IDE 데스크탑 기본사용법 1. 새프로젝트만들기 2. 프로젝트속성 (Properties) 조정 3. 디버거, 프로그램, 프로그램언어옵션설정 4. 프로그램언어위치설정 5. 기타툴옵션설정 6. 새파일만들 MPLAB TM X IDE 한글사용설명서 본문서에서사용되는이미지는 MPLAB X IDE 의버전에따라다소상이할수 있습니다. 목차 다운로드및설치 1. 다운로드 2. 설치 3. MPLAB TM X IDE 데스크탑 기본사용법 1. 새프로젝트만들기 2. 프로젝트속성 (Properties) 조정 3. 디버거, 프로그램, 프로그램언어옵션설정 4. 프로그램언어위치설정 5.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Development Environment 2 Jo, Heeseung make make Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

IDA 5.x Manual 07.02.hwp

IDA 5.x Manual 07.02.hwp IDA 5.x Manual - Manual 01 - 영리를 목적으로 한 곳에서 배포금지 Last Update 2007. 02 이강석 / certlab@gmail.com 어셈블리어 개발자 그룹 :: 어셈러브 http://www.asmlove.co.kr - 1 - IDA Pro 는 Disassembler 프로그램입니다. 기계어로 되어있는 실행파일을 어셈블리언어

More information

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint APUE(Intro).ppt 컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버

More information

1

1 04단원 컴퓨터 소프트웨어 1. 프로그래밍 언어 2. 시스템 소프트웨어 1/10 1. 프로그래밍 언어 1) 프로그래밍 언어 구분 각종 프로그래밍 언어에 대해 알아보는 시간을 갖도록 하겠습니다. 우리가 흔히 접하는 소프트웨어 들은 프로그래밍 언어로 만들어지는데, 프로그래밍 언어는 크게 2가지로 나눌 수 있습니다. 1 저급어 : 0과 1로 구성되어 있어, 컴퓨터가

More information

CD-RW_Advanced.PDF

CD-RW_Advanced.PDF HP CD-Writer Program User Guide - - Ver. 2.0 HP CD-RW Adaptec Easy CD Creator Copier, Direct CD. HP CD-RW,. Easy CD Creator 3.5C, Direct CD 3.0., HP. HP CD-RW TEAM ( 02-3270-0803 ) < > 1. CD...3 CD...5

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

K7VT2_QIG_v3

K7VT2_QIG_v3 1......... 2 3..\ 4 5 [R] : Enter Raid setup utility 6 Press[A]keytocreateRAID RAID Type: JBOD RAID 0 RAID 1: 2 7 " RAID 0 Auto Create Manual Create: 2 RAID 0 Block Size: 16K 32K

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

SaaS 플랫폼을 위한 Web 2.0기반 서비스 제공 미들웨어 기술 연구

SaaS 플랫폼을 위한 Web 2.0기반  서비스 제공 미들웨어 기술 연구 고급객체지향프로그래밍강의보조자료 이영구교수님 고급객체지향프로그래밍 Contents 1. Visual Studio 2010 사용법 1-1. Solution, Project 생성방법 1-2. Build & 실행방법 참고 : 시작프로젝트로설정하는방법 1-3. 빌드 ( 컴파일 ) 시에러메시지로이동, 확인하는방법 1-4. 디버깅방법 참고 : 컴파일, 링크, 빌드란?

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration

More information

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 Outline n n n n n n 보드개요보드연결필수패키지, Tool-Chain 설치 Kernel, file system build Fastboot 및 Tera Term설치 Kernel, file system 이미지전송및설치 - 2 - Young-Jin Kim X-Hyper320TKU

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

초보자를 위한 ADO 21일 완성

초보자를 위한 ADO 21일 완성 ADO 21, 21 Sams Teach Yourself ADO 2.5 in 21 Days., 21., 2 1 ADO., ADO.? ADO 21 (VB, VBA, VB ), ADO. 3 (Week). 1, 2, COM+ 3.. HTML,. 3 (week), ADO. 24 1 - ADO OLE DB SQL, UDA(Universal Data Access) ADO.,,

More information

No Slide Title

No Slide Title Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information