반응형
무엇을 gdb에서 의미합니까?
(gdb) n
134 a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
(gdb) n
(gdb) p a
$30 = <value optimized out>
(gdb) p b
$31 = <value optimized out>
(gdb) p c
$32 = 3735928563
gdb는 어떻게 내 가치를 최적화 할 수 있습니까 ??
즉, eg로 컴파일 gcc -O3
하고 gcc 옵티마이 저가 일부 변수가 중복되어 최적화 될 수 있다는 것을 발견했습니다. 이 특별한 경우에는 동일한 값을 가진 세 개의 변수 a, b, c가있는 것처럼 보이며 아마도 모두 단일 변수로 별칭을 지정할 수 있습니다. 최적화가 비활성화 된 상태로 컴파일하십시오. 예를 들어 gcc -O0
이러한 변수를보고 싶다면 (이것은 일반적으로 어떤 경우 든 디버그 빌드에 좋은 아이디어입니다).
그렇지 않았습니다. 컴파일러가 수행했지만 원래 변수 이름에 대한 디버그 기호가 여전히 있습니다.
에서 https://idlebox.net/2010/apidocs/gdb-7.0.zip/gdb_9.html
스택 프레임에 저장되지 않은 인수의 값은 '최적화 된 값'으로 표시됩니다.
-O (somevalue)로 컴파일하고 최적화가 발생한 함수에서 변수 a, b, c에 액세스하고 있다고 추측합니다.
"export COPTS = '-g -O0';"를 실행하십시오. 코드를 다시 작성하십시오. 다시 빌드 한 후 gdb를 사용하여 디버그합니다. 이러한 오류는 표시되지 않습니다. 감사.
참고 URL : https://stackoverflow.com/questions/5497855/what-does-value-optimized-out-mean-in-gdb
반응형
'Programing' 카테고리의 다른 글
foreach는 자동으로 Dispose를 호출합니까? (0) | 2020.12.13 |
---|---|
DateTime.Now가 메서드가 아닌 속성 인 이유는 무엇입니까? (0) | 2020.12.13 |
잠금 내부 잠금 (0) | 2020.12.13 |
쿼리, 네이티브 쿼리, 명명 된 쿼리 및 입력 된 쿼리의 차이점 (0) | 2020.12.13 |
HTML5` (0) | 2020.12.13 |