Microsoft MVP성태의 닷넷 이야기
디버깅 기술: 219. WinDbg - 명령어 내에서 환경 변수 사용법 [링크 복사], [링크+제목 복사],
조회: 2333
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 

(시리즈 글이 2개 있습니다.)
디버깅 기술: 216. WinDbg - 2가지 유형의 식 평가 방법(MASM, C++)
; https://www.sysnet.pe.kr/2/0/13860

디버깅 기술: 219. WinDbg - 명령어 내에서 환경 변수 사용법
; https://www.sysnet.pe.kr/2/0/13910




WinDbg - 명령어 내에서 환경 변수 사용법

아쉽게도 WinDbg의 표현식에서 환경 변수를 사용할 수는 없습니다.

그래서, .load와 같은 명령어를 사용할 때 (윈도우 명령행처럼) 환경 변수를 이용하면 오류가 발생합니다.

0:00> .load "%USERPROFILE%\\.dotnet\\sos\\sos.dll"
The call to LoadLibrary(%USERPROFILE%\.dotnet\sos\sos.dll) failed, Win32 error 0n2
    "The system cannot find the file specified."
...[생략]...

위의 결과에도 나오지만, "%USERPROFILE%"을 환경 변수로 인식하는 것이 아니라 경로명 자체로 인식하기 때문입니다.

대신, 우회하는 방법이 하나 있긴 한데요, "as" 명령어를 이용해,

as, aS (Set Alias)
; https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/as--as--set-alias-

이렇게 WinDbg 변수로 정의할 수 있습니다.

// https://community.osr.com/t/how-to-nest-if-token/39299/5

0:014> as /e MyEnvVar USERPROFILE

그럼, 다음과 같이 각종 WinDbg 명령에서 사용할 수 있습니다.

0:014> .echo ${MyEnvVar}
C:\Users\testusr

0:014> .load ${MyEnvVar}\.dotnet\sos\sos.dll

0:014> .chain
Extension DLL search Path:
    ...[생략]...
Extension DLL chain:
    C:\Users\testusr\.dotnet\sos\sos.dll: image 9,0,12,7501 @Commit: a651406e39038aef1dbc7c8097b52953284dba27, API 2.0.0, built Sat Jan 25 17:30:17 2025
        [path: C:\Users\testusr\.dotnet\sos\sos.dll]
    kdexts: image 10.0.27793.1000, API 1.0.0, 
    ...[생략]...




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 4/8/2025]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 91  92  93  94  95  96  97  98  99  100  101  102  103  [104]  105  ...
NoWriterDateCnt.TitleFile(s)
11363정성태11/23/201724650사물인터넷: 10. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 (두 번째 이야기)
11362정성태11/22/201720299오류 유형: 428. 윈도우 업데이트 KB4048953 - 0x800705b4 [2]
11361정성태11/22/201723312오류 유형: 427. 이벤트 로그 - Filter Manager failed to attach to volume '\Device\HarddiskVolume??' 0xC03A001C
11360정성태11/22/201723729오류 유형: 426. 이벤트 로그 - The kernel power manager has initiated a shutdown transition.
11359정성태11/16/201723032오류 유형: 425. 윈도우 10 Version 1709 (OS Build 16299.64) 업그레이드 시 발생한 문제 2가지
11358정성태11/15/201728032사물인터넷: 9. Visual Studio 2017에서 Raspberry Pi C++ 응용 프로그램 제작 [1]
11357정성태11/15/201728469개발 환경 구성: 336. 윈도우 10 Bash 쉘에서 C++ 컴파일하는 방법
11356정성태11/15/201730055사물인터넷: 8. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 [4]
11355정성태11/15/201725216사물인터넷: 7. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 [2]파일 다운로드2
11354정성태11/14/201730082사물인터넷: 6. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드로 쓰는 방법 [8]
11353정성태11/14/201727067사물인터넷: 5. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 이더넷 카드로 쓰는 방법 [1]
11352정성태11/14/201723353사물인터넷: 4. Samba를 이용해 윈도우와 Raspberry Pi간의 파일 교환 [1]
11351정성태11/7/201726288.NET Framework: 698. C# 컴파일러 대신 직접 구현하는 비동기(async/await) 코드 [6]파일 다운로드1
11350정성태11/1/201722376디버깅 기술: 108. windbg 분석 사례 - Redis 서버로의 호출을 기다리면서 hang 현상 발생
11349정성태10/31/201723058디버깅 기술: 107. windbg - x64 SOS 확장의 !clrstack 명령어가 출력하는 Child SP 값의 의미 [1]파일 다운로드1
11348정성태10/31/201719202디버깅 기술: 106. windbg - x64 역어셈블 코드에서 닷넷 메서드 호출의 인자를 확인하는 방법
11347정성태10/28/201722993오류 유형: 424. Visual Studio - "클래스 다이어그램 보기" 시 "작업을 완료할 수 없습니다. 해당 인터페이스를 지원하지 않습니다." 오류 발생
11346정성태10/25/201719625오류 유형: 423. Windows Server 2003 - The client-side extension could not remove user policy settings for 'Default Domain Policy {...}' (0x8007000d)
11338정성태10/25/201717256.NET Framework: 697. windbg - SOS DumpMT의 "BaseSize", "ComponentSize" 값에 대한 의미파일 다운로드1
11337정성태10/24/201719785.NET Framework: 696. windbg - SOS DumpClass/DumpMT의 "Vtable Slots", "Total Method Slots", "Slots in VTable" 값에 대한 의미파일 다운로드1
11336정성태10/20/201721061.NET Framework: 695. windbg - .NET string의 x86/x64 메모리 할당 구조
11335정성태10/18/201719852.NET Framework: 694. 닷넷 - <Module> 클래스의 용도
11334정성태10/18/201720611디버깅 기술: 105. windbg - k 명령어와 !clrstack을 조합한 호출 스택을 얻는 방법
11333정성태10/17/201719951오류 유형: 422. 윈도우 업데이트 - Code 9C48 Windows update encountered an unknown error.
11332정성태10/17/201720676디버깅 기술: 104. .NET Profiler + 디버거 연결 + .NET Exceptions = cpu high
11331정성태10/16/201718743디버깅 기술: 103. windbg - .NET 4.0 이상의 환경에서 모든 DLL에 대한 심벌 파일을 로드하는 파이썬 스크립트
... 91  92  93  94  95  96  97  98  99  100  101  102  103  [104]  105  ...