성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
[정성태] 만드실 수 있습니다. 단지, Unity 엔진 내의 스크립트와 W...
[공진영] 안녕하세요 좋은글 감사합니다. 현재 제가 wpf로 관제 모...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>windbg에서 python 스크립트 실행하는 방법 - pykd (2)</h1> <p> 우선 아래의 페이지에서,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > pykd-ext ; <a target='tab' href='https://githomelab.ru/pykd/pykd-ext'>https://githomelab.ru/pykd/pykd-ext</a> ; <a target='tab' href='https://githomelab.ru/pykd/pykd-ext/-/wikis/Downloads'>https://githomelab.ru/pykd/pykd-ext/-/wikis/Downloads</a> </pre> <br /> pykd_ext_[vesrion].zip 파일을 다운로드해 압축을 풀어 둡니다. (이 글에서는 d:\wext 디렉터리로 가정합니다.)<br /> <br /> 이후, windbg preview를 실행해 pykd.dll을 로드합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:00> <span style='color: blue; font-weight: bold'>.load d:\wext\x64\pykd.dll</span> </pre> <br /> 일단 위의 명령어까지는 잘 실행이 될 텐데, 그다음 pykd 명령어를 실행할 때 다음과 같은 오류가 발생할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:001> <span style='color: blue; font-weight: bold'>!py</span> failed to find python interpreter </pre> <br /> 전에도 이에 대해 설명은 했지만,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > windbg - !py 확장 명령어 실행 시 "failed to find python interpreter" ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/12334'>https://www.sysnet.pe.kr/2/0/12334</a> windbg에서 python 스크립트 실행하는 방법 - pykd ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/11227#python'>https://www.sysnet.pe.kr/2/0/11227#python</a> </pre> <br /> 구체적으로 어떻게 파이썬 인터프리터를 찾는가에 관해서는 "https://githomelab.ru/pykd/pykd-ext/-/blob/master/sources/pyinterpret.cpp#L321" 소스 코드에 잘 나옵니다. 즉, <a target='tab' href='#python_reg'>"HKEY_LOCAL_MACHINE"과 "HKEY_CURRENT_USER"에서 모두 "\SOFTWARE\Python" 설정을 찾는데, 반드시 그 하위에는 "InstallPath" 키를 포함</a>하고 있어야 합니다.<br /> <br /> 그렇게 해서 검색이 되는 경로를 "!pkyd.info" 명령어를 통해서 확인할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:000> <span style='color: blue; font-weight: bold'>!pykd.info</span> pykd bootstrapper version: 2.0.0.13 Installed python: Version: Status: Image: ------------------------------------------------------------------------------ * 3.8 x86-64 Unloaded E:\Python38\python38.dll </pre> <br /> 이후, (pykd windbg 확장 모듈이 아닌) pykd 파이썬 모듈을 설치하면 끝!<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > E:\Python38\Scripts> <span style='color: blue; font-weight: bold'>pip install pykd</span> </pre> <br /> <hr style='width: 50%' /><br /> <br /> 그건 그렇고, 아마도 Visual Studio의 설치와 함께 등록된 파이썬의 경우,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:000> <span style='color: blue; font-weight: bold'>!pykd.info</span> pykd bootstrapper version: 2.0.0.25 Installed python: Version: Status: Image: ------------------------------------------------------------------------------ * 3.9 x86-64 Loaded <span style='color: blue; font-weight: bold'>C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\python39.dll</span> </pre> <br /> 뭔가 잘 안 맞는 부분이 있습니다. 가령 windbg 내에서 pykd 파이썬 모듈을 설치하려고 해도 이런 오류가 발생하고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:000> <span style='color: blue; font-weight: bold'>.load d:\wext\x64\pykd.dll</span> 0:000> <span style='color: blue; font-weight: bold'>!pip install pykd</span> Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Lib\runpy.py", line 206, in run_module mod_name, mod_spec, code = _get_module_details(mod_name) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Lib\runpy.py", line 141, in _get_module_details raise error("No module named %s" % mod_name) ImportError: No module named pip </pre> <br /> 이로 인해 관리자 권한의 cmd 명령행에서 설치하면 잘 진행은 되지만,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Scripts> <span style='color: blue; font-weight: bold'>pip install pykd</span> Collecting pykd Using cached pykd-0.3.4.15-cp37-none-win_amd64.whl (11.2 MB) Installing collected packages: pykd Successfully installed pykd-0.3.4.15 </pre> <br /> windbg 내에서 pykd를 로드하는 경우 여전히 오류가 발생합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:000> <span style='color: blue; font-weight: bold'>!py</span> Python 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> <span style='color: blue; font-weight: bold'>import pykd</span> Traceback (most recent call last): File "<console>", line 1, in <module> File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\site-packages\pykd\__init__.py", line 4, in <module> from pykd.pykd import * ImportError: DLL load failed while importing pykd: %1 is not a valid Win32 application. >>> 0:000> <span style='color: blue; font-weight: bold'>!pip list</span> Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Lib\runpy.py", line 206, in run_module mod_name, mod_spec, code = _get_module_details(mod_name) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Lib\runpy.py", line 141, in _get_module_details raise error("No module named %s" % mod_name) ImportError: No module named pip </pre> <br /> 일단 직접적인 해결은 못했고, (비주얼 스튜디오의 것이 아닌) 별도로 설치한 Python 런타임인 경우에는 잘 되는 것을 확인했습니다. 그래서 레지스트리에 원하는 런타임을 등록하기 위해 다음의 reg 파일을 만들고, (경로 및 버전은 각자의 환경에 맞게 조절합니다.)<br /> <br /> <a name='python_reg'></a><br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\SOFTWARE\Python] [HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore] [HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.8] [HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.8\InstallPath] @="E:\\Python38\\" [HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.8\InstallPath\InstallGroup] @="Python 3.8" [HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\3.8\PythonPath] @="E:\\Python38\\Lib;E:\\Python38\\DLLs" </pre> <br /> 등록한 다음, windbg 내에서 해당 런타임의 파이썬을 선택하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:000> <span style='color: blue; font-weight: bold'>.load d:\wext\x64\pykd.dll</span> 0:000> <span style='color: blue; font-weight: bold'>!pykd.info</span> pykd bootstrapper version: 2.0.0.25 Installed python: Version: Status: Image: ------------------------------------------------------------------------------ 3.8 x86-64 Unloaded E:\Python38\python38.dll <span style='color: blue; font-weight: bold'>* 3.9 x86-64</span> Loaded C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\python39.dll 0:000> <span style='color: blue; font-weight: bold'>!pykd.select -3.8</span> 0:000> <span style='color: blue; font-weight: bold'>!pykd.info</span> pykd bootstrapper version: 2.0.0.25 Installed python: Version: Status: Image: ------------------------------------------------------------------------------ <span style='color: blue; font-weight: bold'>* 3.8 x86-64</span> Loaded E:\Python38\python38.dll 3.9 x86-64 Loaded C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\python39.dll </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1465
(왼쪽의 숫자를 입력해야 합니다.)