programing

Xcode에서 LLDB로 디버깅하는 동안 변수 값을 변경하는 방법은 무엇입니까?

newsource 2023. 6. 4. 10:35

Xcode에서 LLDB로 디버깅하는 동안 변수 값을 변경하는 방법은 무엇입니까?

Xcode에서 GDB를 사용하면 디버깅하는 동안 로컬 변수를 변경할 수 있습니다(XCode에서 디버깅하는 동안 NSString 값을 변경하는 방법 참조).LLDB는 비슷한 기능을 제공합니까?그렇다면 어떻게 사용할 수 있을까요?

expr myString = @"Foo"

(lldb) 도움말 expr
현재 범위에 있는 변수를 사용하여 현재 프로그램 컨텍스트에서 C/ObjC/C++ 식을 평가합니다.이 명령은 '원시' 입력을 사용합니다(따옴표로 묶을 필요 없음).

구문: 식 --

명령 옵션 사용: expression [-f ] [-G ] [-d ] [-u ] -- expression [-o] [-d ] [-u ] - expression

   -G <gdb-format>  ( --gdb-format <gdb-format> )
        Specify a format using a GDB format specifier string.

   -d <boolean>  ( --dynamic-value <boolean> )
        Upcast the value resulting from the expression to its dynamic type
        if available.

   -f <format>  ( --format <format> )
        Specify a format to be used for display.

   -o  ( --object-description )
        Print the object description of the value resulting from the
        expression.

   -u <boolean>  ( --unwind-on-error <boolean> )
        Clean up program state if the expression causes a crash, breakpoint
        hit or signal.

예:

exprmy_array->a = my_array[3]
expr -f bin -- (색인 * 8) + 5
exprcarc[] = "foo"; c[0]

중요 참고:이 명령은 'raw' 입력을 사용하므로 명령 옵션을 사용하는 경우 명령 옵션의 끝과 원시 입력의 시작 사이에 ' --'를 사용해야 합니다.

'expr'은 'expion'의 줄임말입니다.

다음과 같은 것들이 저에게 효과가 있습니다.저는 Xcode 8을 사용하고 있습니다.

일부 변수(예: "dict")를 0으로 설정한 다음 코드 흐름을 테스트하려면 다음을 시도하십시오.

  1. 원하는 값으로 초기화한 후 중단점을 올바르게 배치합니다.
  2. 그런 다음 lldb 명령줄에서 "dict = nil"을 실행하여 변경합니다. (예: "dict")
  3. 브레이크 포인트를 넘습니다.
  4. 다음 줄에서 변수 "dict"를 확인합니다.0이 될 것입니다.

콘솔에 있는 것처럼 보일 것입니다.

(lldb) expression dict = nil
(NSDictionary *) $5 = nil

Xcode 10 또는 11을 사용하는 경우 필요한 변수로 초기화한 후 중단점을 적절하게 설정하면 다음을 사용하여 변수를 변경할 수 있습니다.po myString = "Hello World"쉽게.

중단점을 누를 때마다 이 작업을 수행하려면 중단점에 식을 추가할 수 있습니다.

  1. 변수를 조작할 점에 중단점 생성
  2. 마우스 오른쪽 버튼을 클릭하고 중단점 편집 선택
  3. 작업 라디오 상자에서 '디버거 명령'을 선택합니다.
  4. 입력e yourStringName = "Your new value"
  5. '액션 평가 후 자동으로 계속' 확인란을 선택합니다.

식 명령을 사용한 중단점 예제 스크린샷

언급URL : https://stackoverflow.com/questions/9907387/how-to-change-variables-value-while-debugging-with-lldb-in-xcode