반응형
반응형
프로그램 개발 중 프로그램 에러는 컴파일 에러와 런타임 에러가 있습니다. 이번 포스팅에서는 런타임 에러 발생 시 디버깅에 필요한 정보를 파일로 저장하는 방법을 알아보겠습니다. 1. 런타임 에러의 종류 구문오류는 컴파일 타임에 컴파일러가 알려주는데 아래와 같은 런타임 에러는 프로그램이 그냥 꺼져버립니다. 그래서 별도로 그 순간의 스냅샷 정보를 저장하지 않으면 디버깅이 어렵습니다. 런타임 에러의 분석과 해결을 위해서는 당시 메모리와 레지스터 등의 디버깅에 필요한 정보를 파일로 저장할 필요가 있습니다. https://docs.microsoft.com/en-us/windows/win32/dxtecharts/crash-dump-analysis의 Crash Dump Analysis가 그 방법을 알려주고 있습니다. ..
이번 포스팅에서는 C/C++ GUI 개발 환경에서 로그 출력을 위한 Logger 매크로를 작성하여 효율적으로 디버깅 메시지를 출력하는 방법을 알아보도록 하겠습니다. Logger 요구사항은 다음과 같습니다. MFC 프로그램 개발 시 콘솔 로그를 확인할 수 있어야 한다. 로그가 파일로 저장되어야 한다. 1. 콘솔창에 로그 출력하는 방법 MFC와 같은 GUI 개발환경에서 콘솔로 로그를 출력하려면 컴파일 단계에서 링커에게 콘솔을 띄우도록 알려줘야 합니다. 그 방법은 아래 코드를 참조하면 됩니다. framework.h 에 아래 내용 추가 후 코드에서 DPRINTF 함수를 호출하면 별도 콘솔창에 로그가 출력됩니다. #ifdef _DEBUG #ifdef _UNICODE #define WIDEN(x) L ## x #d..
MFC 기반 프로젝트에서 json을 파싱 하기 위해 가장 적절한 json 라이브러리를 알아보았습니다. 그 결과 simdjson이 가장 최신기술을 활용하여 개발된 것 같아서 프로젝트에 적용해 보았습니다. 참고로 32비트 프로젝트에서는 사용이 불가능합니다. 1. simdjson? SIMD 기술을 적용하여 json 파서 중 가장 빠른 파서라고 하며 관련 논문도 찾아볼 수 있습니다. SIMD는 Single Instruction Multiple Data의 줄임말로서 병렬 컴퓨팅의 한 종류입니다. 하나의 명령어로 여러 개의 값을 동시에 계산하는 기술입니다. 하나의 명령어를 수행하는 데 걸리는 시간을 줄일 수 있기 때문에 연산이 많은 작업에서 성능을 향상할 수 있습니다. https://github.com/simdjs..
상용 HTS 프로그램을 사용하면 차트와 연계하여 이동평균선, MACD 등의 지표 정보를 볼 수 있습니다. 하지만 xingAPI, Kiwoom Plus 같은 증권사 API를 이용하면 지표를 별도로 계산해야 합니다. 각 지표에 대한 계산식은 쉽게 찾을 수 있지만 그 지표들를 직접 계산하는 코드를 작성하는 것은 시간낭비라고 생각합니다. 왜냐하면 이미 누군가 만들어두었기 때문에 갖다 쓰면 됩니다. 대표적인 기술적 지표 분석 라이브러리 TA-LIB을 MFC 프로젝트에 설치하는 방법을 알아보겠습니다. 1. TA-LIB에 대하여 TA-Lib은 트레이딩 소프트웨어 개발자들을 위한 기술적 분석 라이브러리로서 오픈소스입니다. 아래 경로에서 TA-Lib 소스코드를 다운로드할 수 있습니다. https://ta-lib.org/..
증권사 API에서 제공하는 TR 종류는 200여 개가 넘는데 각 TR에 대한 헤더파일을 소스코드에 추가하는 작업만 해도 시간이 오래 걸리고 관리도 어렵습니다. 이럴 때 엑셀을 활용하여 C코드를 자동 생성하는 방법을 알아보겠습니다. 1. 엑셀을 활용하여 C 코드를 생성하는 이유 증권사 API(이베스트투자증권 xingAPI)는 용도별로 TR이 구분되어 있습니다. 주식 주문을 하려면 TR CSPAT00600을 호출하면서 계좌번호, 계좌비밀번호, 종목번호, 매수/매도 구분값, 신용/현금 여부 등의 파라미터를 넘기게 됩니다. 이베스트투자증권은 작성일 현재 207개의 TR을 제공합니다. 헤더파일도 207개, TR전송함수 207개, 수신함수 207개, TR별 수신함수 콜백 맵, 흐름제어, 진단모듈에서 정보 참조를 위..
1. QEMU의 필요성 QEMU는 가상화와 에뮬레이터 기능을 제공하는 오픈소스 소프트웨어이다. 동적 변환기를 사용하여 성능이 뛰어난 것이 특징이며 소프트웨어 스택 전체를 가상머신 위에서 실행할 수 있다. x86 시스템을 에뮬레이트 하기 위해서 만들어졌지만 현재는 ARM, MIPS, ALPHA 등의 다양한 프로세서에 대한 에뮬레이팅 환경도 제공한다. 에뮬레이터를 이용하면 실제 물리적인 하드웨어 없이 시스템 개발을 할 수 있는 장점이 있다. QEMU는 프로세서뿐 아니라 디바이스 단위까지 에뮬레이션을 제공하기 때문에 실제 타깃보드에서 실행하는 것과 동일한 효과를 얻을 수 있다. 임베디드 시스템용 소프트웨어는 개발과정에 많은 자원을 필요로 한다. 특히 디버깅이 어려운 편이며 디버깅 장비 또한 고가에 속한다. 하..