>  기사  >  백엔드 개발  >  C++ 함수 디버깅 설명: 오류를 일으킨 코드 줄을 찾는 방법은 무엇입니까?

C++ 함수 디버깅 설명: 오류를 일으킨 코드 줄을 찾는 방법은 무엇입니까?

王林
王林원래의
2024-05-02 10:00:01521검색

C++ 개발에서 함수 디버깅은 잘못된 코드 줄을 찾는 데 도움이 될 수 있습니다. 디버깅은 GDB, Visual Studio 디버거 또는 어설션을 사용하여 가능합니다. GDB는 중단점 설정, 한 줄씩 실행, 변수 인쇄 등을 포함한 강력한 명령줄 디버깅 기능을 제공합니다. Visual Studio 디버거는 중단점, 단계별 실행, 변수 보기 및 함수 호출 추적을 지원하는 그래픽 인터페이스를 제공합니다. Assertion은 코드를 통해 확인할 수 있으며, 조건이 true가 아닐 경우 프로그램이 종료되고 오류 메시지가 출력됩니다. 이러한 기술을 통해 개발자는 코드를 효율적으로 디버깅하고 디버깅 시간을 단축하며 코드 품질을 향상시킬 수 있습니다.

C++ 函数调试详解:如何找出导致错误的代码行?

C++ 함수 디버깅에 대한 자세한 설명: 오류를 일으키는 코드 줄을 찾는 방법은 무엇입니까?

C++ 개발에서는 오류를 일으키는 코드 줄을 찾는 데 함수 디버깅이 중요합니다. 이 기사에서는 일반적인 함수 디버깅 기술을 자세히 소개하고 해당 응용 프로그램을 시연하는 실제 사례를 제공합니다.

1. GDB(GNU 디버거)

GDB는 코드 실행을 분석하고 문제를 진단하는 강력한 명령줄 디버거입니다. GDB를 사용하려면 터미널에 다음 명령을 입력하세요.

gdb 程序名

그런 다음 다음 명령을 사용하여 디버깅할 수 있습니다.

  • break: 지정된 코드 줄에 중단점을 설정합니다.
  • break: 在指定的代码行处设置断点。
  • run: 运行代码直到执行到断点。
  • step: 逐行执行代码。
  • next: 跳过函数调用並继续执行代码。
  • print: 打印变量或表达式的值。

2. Visual Studio 调试器

Visual Studio IDE 内置了一个功能强大的图形调试器。在调试模式下,可以使用以下工具:

  • 断点:在代码行处添加断点。
  • 步进:逐行或逐函数执行代码。
  • 局部变量窗口:查看函数中的局部变量。
  • 调用堆栈窗口:跟踪函数调用顺序。

3. 断言

断言是一种代码检查,如果某个条件不成立,就会导致程序终止并打印错误消息。例如:

assert(condition == true);

实战案例:查找非法参数

考虑以下 C++ 函数:

int sum(int a, int b) {
  if (a < 0 || b < 0) {
    throw std::invalid_argument("负数参数无效");
  }

  return a + b;
}

如果向此函数传递负数,将引发 std::invalid_argument 异常。

使用 GDB 调试

(gdb) break sum.cpp:10
(gdb) run
(gdb) n
(gdb) print a
(gdb) print b

这将在第 10 行处设置断点并运行程序。之后,逐行执行代码并打印 ab 的值,以识别导致异常的非法参数。

使用 Visual Studio 调试器

在 Visual Studio 中,在第 10 行处设置断点,然后运行程序。在调试器工具栏中,可以使用步骤工具逐行执行代码,并检查局部变量窗口中的 abrun: 중단점에 도달할 때까지 코드를 실행합니다.

단계: 코드를 한 줄씩 실행합니다.

다음: 함수 호출을 건너뛰고 코드 실행을 계속합니다. print: 변수나 표현식의 값을 인쇄합니다.

2. Visual Studio Debugger

🎜Visual Studio IDE에는 강력한 그래픽 디버거가 내장되어 있습니다. 디버그 모드에서는 다음 도구를 사용할 수 있습니다. 🎜🎜🎜Breakpoints: 코드 줄에 중단점을 추가합니다. 🎜스테핑: 코드를 한 줄씩 실행하거나 함수별로 실행합니다. 🎜로컬 변수 창: 함수 내 로컬 변수를 봅니다. 🎜호출 스택 창: 함수 호출 순서를 추적합니다. 🎜🎜3. Assertion🎜🎜🎜Assertion은 특정 조건이 true가 아닌 경우 프로그램을 종료하고 오류 메시지를 인쇄하는 코드 검사입니다. 예: 🎜rrreee🎜🎜실용 예: 잘못된 인수 찾기🎜🎜🎜다음 C++ 함수를 고려하세요. 🎜rrreee🎜 이 함수에 음수를 전달하면 std::invalid_argument 예외가 발생합니다. 던져졌다. 🎜🎜🎜GDB를 사용한 디버깅🎜🎜rrreee🎜 이렇게 하면 라인 10에 중단점이 설정되고 프로그램이 실행됩니다. 그런 다음 코드를 한 줄씩 실행하고 ab 값을 인쇄하여 예외를 발생시킨 잘못된 매개변수를 식별합니다. 🎜🎜🎜Visual Studio 디버거 사용🎜🎜🎜Visual Studio에서 10번째 줄에 중단점을 설정하고 프로그램을 실행합니다. 디버거 도구 모음에서 단계 도구를 사용하여 코드를 한 줄씩 단계별로 살펴보고 로컬 변수 창에서 ab 값을 검사할 수 있습니다. 🎜🎜🎜결론🎜🎜🎜 C++ 코드를 효과적으로 디버깅하려면 함수 디버깅 기술을 익히는 것이 중요합니다. GDB, Visual Studio 디버거 또는 어설션을 사용하면 개발자는 오류를 일으키는 코드 줄을 쉽게 찾아낼 수 있으므로 디버깅 시간이 줄어들고 코드 품질이 향상됩니다. 🎜

위 내용은 C++ 함수 디버깅 설명: 오류를 일으킨 코드 줄을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.