c++
-
The language server crashed. Restarting...c++ 2024. 2. 21. 12:22
이 오류가 나는 이유는, 비공식 Extension 들이 후져서 그렇다. Microsoft의 C++ 확장만 내버려두고 모든걸 Uninstall 하고 재시작하면 해결. The reason for this error is because unofficial extensions are lousy. Leave only Microsoft's C++ extension and uninstall everything else, then restart to resolve the issue.
-
string을 sprintf, printf 형식으로 사용하기c++ 2013. 7. 4. 11:41
C++표준 string (basic_string)을 printf 형식으로 사용하는 편한 방법이 없을까? 인터넷 찾아보면 여러가지 방법들이 나오긴하는데, static 변수를 이용하여 편하고/간결하고/오버헤드 없이 구현해 보았다. void strFormat(string &strResult, const char *pFormat, ... ){ static char sprintf_buffer[8192]; va_list va = NULL;va_start(va, pFormat);vsprintf(sprintf_buffer, pFormat, va);strResult = sprintf_buffer; va_end(va);} void strReplace(string& subject, const string& search, c..
-
알람 시그널을 이용하여 의도하지 않은 무한루프 디버깅c++ 2013. 7. 3. 21:46
개발환경 : C++/STL/Linux/gcc프로그램을 짜다 보면 잘 못 짜서 어디선가 무한루프에 빠져서 헤어나질 못하는 경우가 종종 있는데, 이럴때 SIGALRM을 이용하여 이 녀석이 대체 무슨 짓을 하고 있었는지 자세하게 확인할 수 있다.// signal handlerstatic void SigAlarm(int signo){ ... closing_routine(); ....abort(); // exit with core_dump} int main(){// 핸들러 설정if(signal(SIGALRM, SigAlarm) == SIG_ERR) ERROR("signal ALARM error");... // main loopwhile(1){alarm(5); // 알람설정 5초...do_something();....
-
디버깅, call stack back tracec++ 2013. 7. 3. 21:37
누가 이 함수를 호출하였을까? 개발환경 : C++/STL/Linux/gcc디버깅을 하다보면, 대체 어디서 이 함수를 호출했을까 궁금해질때가 있다. 이럴때 호출한 함수들을 역순으로 알아낼 수 있는 함수 루틴. #include void call_stack_dump() {void * array[50];char ** messages;int size, i; size = backtrace(array, 50);messages = backtrace_symbols(array, size); // skip first stack frame (points here)for (i = 0; i < size; ++i){fprintf(stderr, "[bt]: (%d) %s\n", i, messages[i]);} free(message..