중단점활용하기 중단점 (Breakpoint) 의개념은프로그램의특정명령어바로이전에실행을임의로중단하는것으로의 매우간단합니다. 중단점의구현은소프트웨어또는하드웨어로가능합니다. 중단점사용은버그를찾아내고제거하는데매우쉽고간단한방법이며복잡한조합으로사용할수있습니다. 소프트웨어개발자들은중단점기능없이개발이어려울정도이며, 매우자주사용하는디버깅기능입니다. 이글에는모든개발자들이 IAR Embedded Workbench 에서제공하는중단점의모든기능을이해하고사용할수있도록다양한중단점에대한정보가담겨있습니다. 코드중단점 코드중단점은가장간단하게사용할수있는중단점입니다. 실행중중단을원하는 C 코드라인또는 disassembly 창의명령어에서중단점설정토글만으로사용이가능합니다. 중단점활성화이후응용프로그램이실행중중단점을만나면멈춥니다. 이때, 변수, 플래그, 레지스터들의값을확인할수있습니다. 값들의임의변경도가능합니다.
Page 2 코드중단점은하드웨어중단점의갯수만큼의제한이있습니다. 하지만소프트웨어중단점을사용하거나응용프로그램을 RAM 상에서실행하면갯수의제한이없어집니다. Cortex-M 계열코어는 6~8 개의중단점갯수제한이있습니다. 이러한제한된갯수내에서필요에따라중단점의활성화선택이가능합니다. 메뉴의 View 탭에서 Breakpoints 를선택하시면설정된중단점을확인가능하며체크박스선택으로활성화 / 비활성화선택이가능합니다. 동시에여러개의비활성화된중단점을설정할수있습니다. 하지만제한된갯수인 6~8 개이상의중단점이동시에활성화되지않습니다. Breakpoints 윈도우에서모든중단점리스트를확인할수있으며설정된중단점을선택후마우스오르쪽버튼클릭을하시면추가항목을확인할수있습니다. 마우스오른쪽버튼클릭후 Edit 를선택하십시오. 코드중단점에는중단점에대한조건을설정할수있습니다. 특정플래그나변수의조건이설정된조건에만족하면중단점에서실행이중단됩니다. 조건이있는코드중단점은중단점이인터럽트루틴안에필요할경우매우유용합니다. 만약조건식이없다면매번응용프로그램이멈출것이고디버깅이불가능해집니다. 플래그와변수값의조건으로쉽게디버깅이가능합니다.
Page 3 조건식에사용되어지는문법은 C 언어의비교연산자와같습니다. ==, >=, <=, >, < 의비교구문이사용가능합니다. 예를들어, counter 가 10 이되는때에응용프로그램을멈추기원하면, counter==10 이라고조건식에적어넣습니다. counter 의값이 10 이되면설정한중단점위치에멈추게됩니다. Condition true/changed( 조건이참 / 변경됨일경우설정 ) 선택, Skip count( 일정횟수건너뛰기설정 ) 또한잘활용하면디버깅이좀더쉬워집니다.
Page 4 로그중단점 로그중단점은응용프로그램실행중중단점위치에도달했을때응용프로그램을멈추지않으며기록을남기고지나갑니다. 로그중단점설정은원하는코드위치에서마우스오른쪽번튼을클릭후 Toggle Breakpoint (Log) 를선택합니다. Breakpoints 윈도우에서설정된로그중단점을마우스오른쪽버튼클릭하여 Edit 를선택하시면로그메시지및조건식설정이가능합니다. 중단점에도달하면입력한메시지가출력됩니다. 매번중단점에도달할때마다메시지가 Debug Log 창에출력됩니다. 메시지앞에추가된카운터 값으로응용프로그램이실행되는동안중단점이위치한소스코드를얼마나많이지나갔는지알수 있습니다.
Page 5 데이터중단점 데이터중단점은특정주소의메모리, 플래그, 변수또는레지스터에접근하여읽기와쓰기를모니터하기때문에다른중단점과조금다릅니다. 데이터중단점은사용이매우간단합니다. 플래그또는변수에서마우스오른쪽버튼을클릭한후 Set Data Breakpoint for --- 를선택합니다. 기본적으로읽기와쓰기접근모두중단됩니다. 추가설정을위하여메뉴의 View Breakpoints 에서설정된데이터중단점을선택후마우스오른쪽버튼클릭하여 Edit 항목을선택합니다. 코드중단점의조건설정과같이중단점에대한조건도설정할수있습니다. Edit 버튼을누르면절대주소와소스의위치설정도할수있도록별도의창이뜹니다. 변수또는플래그의경우 Size 를 Auto 로설정하길권장합니다. 만약, 더큰범위의모니터링이필요한경우수동으로설정가능합니다. 데이터중단점은플래그나변수의잘못된값으로인한오류디버깅에매우유용하게사용됩니다. 또한, 스택의오버플로우에대한디버깅에도매우유용합니다. 데이터중단점을이용하여스택최대사용량의 80~90% 정도주소에데이터중단점을설정후응용프로그램을실행합니다. 응용프로그램이수행중스텍사용이 80~90% 주소까지사용이된다면멈추게됩니다. 응용프로그램이중단된이후한단계씩진행하며스택오버플로우의원인을찾아해결합니다.
Page 6 데이터로그중단점 데이터로그중단점은조금특별한중단점입니다. 응용프로그램의수행시간동안특정플래그또는변수값의변화를확인할수있는중단점입니다. 데이터로그중단점설정방법도다른중단점과동일한방법으로설정가능합니다. 플래그또는변수에서마우스오른쪽버튼을클릭한후 Set Data Log Breakpoint for --- 를선택합니다. Breakpoints 위도우에서설정된데이터중단점을선택후마우스오른쪽버튼클릭하여 Edit 항목을선택하시면데이터중단점과같이 Access type, Size 설정이가능하며 Trigger range 설정도가능합니다. 설정하신중단점의데이터로그는 Timeline 윈도우와 Data Log 윈도우에서확인가능하며데이터 로그중단점은최대 4 개까지활성화가능합니다. 또한, Data Log 윈도우에기록된로그는텍스트 파일로저장이가능합니다.
Page 7 파위중단점 IAR Systems 의 Embedded Workbench 에는타겟의에너지소비와소스코드와의상관관계를모니터할수있는 Power Debugging 이라는컨셉의기능이있습니다. 응용프로그램이수행됨에따라타겟의에너지소모를모니터링할수있고소스코드의수행별에너지소모를확인할수있습니다. 또한, 에너지소모에따른중단점을설정할수있습니다. 예를들어, 응용프로그램이타겟에서수행중 215mA 이상전류를소비하는순간멈추도록중단점을설정할수있습니다. 중단점의전류한계점 (Threshold) 설정도매우간단합니다. C-SPY 환경의메뉴에서 I-jet/JTAGjet 하위 항목중 Power Log Setup 을선택합니다. Power Log Setup 창이만들어지며한계점값, 단위등 Power Log 에대한다양한설정을할수있습니다. Timeline 창과 Power Log 창에서기록된전류값의소스코드위치를확인하길원하면해당전류값을 더블클릭하는것만으로해당소스코드에접근이가능합니다.
Page 8 Power Debugging 기능으로특정이상의비정상적인피크성전류소모를줄일수있고배터리를더오래사용할수있도록전류의낭비를줄일수있습니다. 전류소모에민감한제품의소프트웨어를개발하는데에매우유용한기능입니다. Timeline 창은시간의흐름에따라파라미터의값을그래프화하여보여줌으로 Power Debugging 에유용하게사용됩니다.