우선 주 목적으로는 디버깅을 하는 데 사용하겠지만, 어떤 사람이든 프로그램을 짤 때 한번에 에러없이 짜기란 여간 힘든일이 아니다. 설사 자신이 짠 프로그램이 아니라 다른 사람의 프로그램을 실행시킬 때도 마찬가지다.
디버깅 툴로는 대략 다음과 같은 작업을 할 수 있다.
우선 디버깅 툴을 사용하기 위해서는 아래와 같은 명령이 필요하다.
>gmake debug
그러면 GUI 디버깅 툴이 자동으로 실행된다.
만일 디버깅 툴이 가장 먼저 어셈블러가 나온다면, 별도의 작업이 필요하다.
우선 stm/arena_dev/make/toolset.mak 파일 연다.
그리고 중간 쯤에 아래와 같은 부분이 있을 것이다.
define COMPILE_C $(if $(LINT_OUTPUT),echo $(LINT_COMMAND) >> $(LINT_OUTPUT) $(LINT_COMMAND)) $(CC) -cpp -debug-runtime -g $< $(ST20_CFLAGS) $($(basename $@)_CFLAGS) $($(basename $@)_ST20_CFLAGS)\ $(INCLUDES) $(BASE_INCLUDES) -o $@ endef
위와 같이 -g 옵션을 추가시켜준다. 그리고 저장한 후에 다시 컴파일하고
make debug
를 쳐서 제대로 main 함수에 나오는지 확인한다.
만일 그래도 안나온다면 마지막 방법을 사용해보기 바란다.
아래와 같은 부분에 위와 비슷하게 -g 옵션을 추가해준다.
define LINK_EXECUTABLE $(if $($(basename $@)_INIT),,$(if $(DVD_LINK_INIT),,$(error entry point for $@ must be specified in $(basename $@)_INIT variable))) ---------$(CC) -cpp -debug-runtime -g $(LIBRARIES) -T $(CONFIG_FILE) \ $(ST20_LKFLAGS) $(EXTRA_LINK_FLAGS) $($(basename $@)_LKFLAGS) $($(basename $@)_ST20_LKFLAGS) \ $^ $(OSLIBS) -p $(if $($(basename $@)_INIT),$($(basename $@)_INIT),$(DVD_LINK_INIT)) -o $@ endef define RUN_OBJECT --------st20run -g $(addprefix -l ,$(CFG_PATH)) -i $(CONFIG_FILE) -t $(TARGET) $(subst _RUN,,$@) \ $(ST20_RUNARGS) $(ARENA_RUNARGS) endef
Variable 을 실행하면 그때그때의 변수 값을 확인할 수 있다.