반응형

C 100

gdb 디버거에 가장 까다롭고 유용한 명령어

gdb 디버거에 가장 까다롭고 유용한 명령어 현재 이 질문은 Q&A 형식에 적합하지 않습니다.우리는 답변이 사실, 참고 자료 또는 전문지식에 의해 뒷받침되기를 기대하지만, 이 질문은 토론, 논쟁, 여론 조사 또는 연장된 토론을 요구할 것이다.이 질문이 개선되고 다시 열릴 수 있다고 생각되면헬프센터를 방문하여 안내를 받으십시오. 닫힘9년 전. gdb나 dbx와 같은 디버거를 실행하는 동안 가장 까다롭고 유용한 명령어를 게시할 수 있습니까? backtrace full: 로컬 변수를 사용한 완전한 역추적 위, 아래, 프레임:프레임 사이를 이동하다 watch: 특정 조건이 충족되면 프로세스를 일시 중지합니다. set print pretty on : 예쁘게 포맷된 C 소스 코드를 출력합니다. set logging..

source 2022.08.19

최적의 C/C++ 네트워크 라이브러리

최적의 C/C++ 네트워크 라이브러리 이 질문의 답변은 지역사회의 노력입니다.기존 답변을 편집하여 이 게시물을 개선하십시오.현재 새로운 답변이나 상호작용을 받아들이지 않고 있습니다. C/C++로 작업한 지 얼마 되지 않았는데, 사람들이 가장 좋아하는 크로스 플랫폼 라이브러리가 무엇인지 궁금했을 뿐입니다. 좀 더 튼튼한 도서관뿐만 아니라 빠르고 지저분한 좋은 도서관을 찾고 있습니다.종종 그것들은 두 개의 다른 도서관이고 그것은 괜찮습니다.라이브러리 집계 목록 부스트 아시오는 정말 잘해요. Asio는 독립 실행형 라이브러리로도 사용할 수 있습니다. ACE도 좋고, 조금 더 성숙하고, 그것을 뒷받침하는 책도 몇 권 있습니다. C++ 네트워크 라이브러리 동작 큐트 락넷 제로 MQ(C++) nanomsg(C 라이..

source 2022.08.19

프로젝트 오일러와의 속도 비교: C vs Python vs Erlang vs Haskell

프로젝트 오일러와의 속도 비교: C vs Python vs Erlang vs Haskell Project Oiler의 문제 #12를 프로그래밍 연습으로 사용하여 C, Python, Erlang 및 Haskell의 구현(절대 최적은 아님)을 비교했습니다.조금 더 높은 실행 시간을 얻기 위해 원래 문제처럼 500이 아닌 1000이 넘는 첫 번째 삼각수를 찾습니다. 결과는 다음과 같습니다. C: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lorenzo@enzo:~/erlang$ time ./euler12.bin 842161320 real 0m11.074s user 0m11.070s sys 0m0.000s Python: lorenzo@enzo:~/erla..

source 2022.08.19

컴파일 가드가 다중 정의 포함을 방지하지 못하는 이유는 무엇입니까?

컴파일 가드가 다중 정의 포함을 방지하지 못하는 이유는 무엇입니까? 여러 *.c 소스 파일에 포함된 헤더 파일 x.h가 있습니다.이 헤더 파일에는 몇 가지 구조 변수가 정의되어 있습니다. 헤더 파일의 선두에 다음과 같이 다중 포함 방지 가드를 배치했습니다. #ifndef X_H #define X_H ... .. //header file declarations and definitons. #endif//X_H 빌드 시 여러 정의와 관련된 링커 오류가 발생합니다.나는 그 문제를 이해한다. 헤더 파일 상단에 있는 다중 포함 방지 가드는 헤더 파일 x.h의 다중 포함을 방지하여 x.h에 있는 변수의 다중 정의를 회피하지 않습니까? #pragma일단 이 컴파일러에서는 동작하지 않습니다.그러면 해결책은 무엇일까요?..

source 2022.08.19

MSVS가 +0을 최적화하지 않는 이유는 무엇입니까?

MSVS가 +0을 최적화하지 않는 이유는 무엇입니까? 이 질문은 매우 흥미로운 현상을 보여줍니다. 탈규격화된 플로트는 코드를 몇 배 이상 느리게 만듭니다. 그 행동은 인정된 답변에 잘 설명되어 있다.다만, 현재 153표 상승한 코멘트가 있습니다.다음 사항에 대해서는 만족스러운 답변을 찾을 수 없습니다. 이 경우 컴파일러는 +/- 0을 삭제하지 않는 이유는 무엇입니까?– 마이클 도건 사이드 노트:나는 0f가 정확히 표현되어야 한다고 생각하지만(더 나아가 이진수 표현은 모두 0이어야 함), c11 표준에서는 그러한 주장을 찾을 수 없다.이를 입증하는 인용문이나 이 주장을 반박하는 논거가 가장 환영할 것입니다.어쨌든 마이클의 질문이 여기서 가장 중요한 질문입니다. §5.2.4.2.2 실장에서는, 0 및 부동 ..

source 2022.08.18

Linux 커널 패닉을 읽고 이해하고 분석하고 디버깅하는 방법

Linux 커널 패닉을 읽고 이해하고 분석하고 디버깅하는 방법 다음 Linux 커널 덤프 스택 추적을 고려하십시오. 예를 들어 호출을 통해 커널 소스 코드에서 패닉을 트리거할 수 있습니다.panic("debugging a Linux kernel panic");: [] (unwind_backtrace+0x0/0xf8) from [] (warn_slowpath_common+0x50/0x60) [] (warn_slowpath_common+0x50/0x60) from [] (warn_slowpath_null+0x1c/0x24) [] (warn_slowpath_null+0x1c/0x24) from [] (local_bh_enable_ip+0xa0/0xac) [] (local_bh_enable_ip+0xa0/0xa..

source 2022.08.18

조립 코드를 C에 삽입할 수 있는 방법이 있나요?

조립 코드를 C에 삽입할 수 있는 방법이 있나요? 옛날에는 오래된 볼랜드 DOS 컴파일러로 다음과 같은 작업을 할 수 있었던 것으로 기억합니다. asm { mov ax,ex etc etc... } 현재 준플랫폼에 의존하지 않는 방법이 있습니까?BIOS를 호출할 필요가 있기 때문에 ASM 코드를 사용하지 않고 할 수 있는 방법이 있다면 마찬가지로 도움이 될 것입니다.GCC 사용 __asm__("movl %edx, %eax\n\t" "addl $2, %eax\n\t"); VC++ 사용 __asm { mov eax, edx add eax, 2 } GCC에는 그 이상의 것이 있습니다.명령어에서는 컴파일러의 옵티마이저가 망치지 않도록 무엇이 변경되었는지 컴파일러에 알려야 합니다.난 전문가는 아니지만 가끔은 이렇게..

source 2022.08.17

num++는 'int num'의 원자일 수 있습니까?

num++는 'int num'의 원자일 수 있습니까? 일반적으로는int num,num++(또는++num)는, 읽기/쓰기 조작으로서 atomic이 아닙니다.다만, GCC등의 컴파일러가 다음의 코드를 생성하는 것을 자주 볼 수 있습니다(여기서 시험해 보십시오). void f() { int num = 0; num++; } f(): push rbp mov rbp, rsp mov DWORD PTR [rbp-4], 0 add DWORD PTR [rbp-4], 1 nop pop rbp ret 5행째, 이것은 다음 행에 대응하고 있습니다.num++한 가지 지시입니다만, 우리가 결론을 내릴 수 있을까요?num++ 이 케이스에 원자력이 있나요? 그렇다면 데이터 경쟁의 위험 없이 동시(멀티 스레드) 시나리오에서 이렇게 생성..

source 2022.08.17

"collect2: error: ld returned 1 exit status"는 무슨 뜻입니까?

"collect2: error: ld returned 1 exit status"는 무슨 뜻입니까? 에러를 알 수 있습니다.collect2: error: ld returned 1 exit status아주 자주요.예를 들어, 다음과 같은 코드 조각을 실행하고 있었습니다. void main() { char i; printf("ENTER i"); scanf("%c",&i); clrscr(); switch(i) { default: printf("\nHi..\n"); break; case 1: printf("\n\na"); break; case 2: printf("\nb\n"); break; case 3: printf("\nc"); break; } } 그리고 나는 이것을 얻었다: main.c:(.text+0x33)..

source 2022.08.17

C로 문자열을 소문자로 하는 방법은 무엇입니까?

C로 문자열을 소문자로 하는 방법은 무엇입니까? C의 소문자 문자열로 변환하려면 어떻게 해야 하나요?이 기능은 표준 라이브러리에 있습니다.이것이 제가 볼 수 있는 가장 간단한 기능입니다.네, 문자열을 반복하여 각 문자를 소문자로 변환합니다. 다음과 같은 사소한 것: #include for(int i = 0; str[i]; i++){ str[i] = tolower(str[i]); } 라이너 한 척을 원하신다면 J.F.에서 이 라이너를 사용하셔도 됩니다.세바스찬: for ( ; *p; ++p) *p = tolower(*p); ASC에 한정되어 있는 경우, 소문자로 변환하는 것은 상승 비트 0x60에 해당합니다.II: for(char *p = pstr; *p; ++p) *p = *p > 0x40 && *p <..

source 2022.08.17
반응형