성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
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'>윈도우 8 - 새로 추가된 네트워크 커널 디버깅 및 PowerShell 3.0</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;' > PowerShell Script to Detect If NIC Supports Win8 Network Kernel Debugging ; <a target='tab' href='http://chentiangemalc.wordpress.com/2012/03/03/powershell-script-to-detect-if-nic-supports-win8-network-kernel-debugging/'>http://chentiangemalc.wordpress.com/2012/03/03/powershell-script-to-detect-if-nic-supports-win8-network-kernel-debugging/</a> </pre> <br /> 윈도우 8에는 Windows PowerShell 3.0이 새롭게 추가되었습니다.<br /> <br /> 다행히 윈도우 7에서도 Windows PowerShell 3.0을 설치할 수 있는데요. 독립적으로 PowerShell 3.0으로 업데이트 할 수는 없고 "Windows Management Framework 3.0"을 설치하면 그 안에 포함되어 업데이트됩니다. (WMF는 .NET Framework 4.0을 요구하고 현재는 영문 윈도우용으로 배포되며 설치 후 재부팅이 필요합니다.) 그런데 기본 명령어 셋을 보니 윈도우 8과 동일하지 않더군요. 예를 들어, 위의 글에서 설명한 "Get-NetAdapter" 명령어는 WMF 3.0을 설치한 윈도우 7에서는 없었습니다.<br /> <br /> 현재, 정식 버전이 나오지는 않았고 - 아직 윈도우 8이 베타이니 - 이것 역시 베타까지 공개되었습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Windows Management Framework 3.0 Beta Available for Download ; <a target='tab' href='https://devblogs.microsoft.com/powershell/windows-management-framework-3-0-beta-available-for-download/'>https://devblogs.microsoft.com/powershell/windows-management-framework-3-0-beta-available-for-download/</a> 다운로드 ; <a target='tab' href='http://go.microsoft.com/fwlink/?LinkID=240290'>http://go.microsoft.com/fwlink/?LinkID=240290</a> </pre> <br /> 개인적으로는, 무엇보다도 PowerShell 3.0이 문법적으로 많이 깔끔해졌다는데 의미가 있어 보입니다. 아래의 글에 보면 예제가 나오는데요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Quick note on PowerShell 3.0 ; <a target='tab' href='http://www.thomasmaurer.ch/2011/09/quick-note-on-powershell-3-0/'>http://www.thomasmaurer.ch/2011/09/quick-note-on-powershell-3-0/</a> </pre> <br /> PowerShell 2.0에서는 아래와 같이 다소 지저분한(?) 구문을 사용해야 했지만,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Get-Childitem | Where {$_.name -eq "Desktop"} </pre> <br /> 3.0부터는 간결하게 코딩할 수 있도록 개선되었습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Get-Childitem | where name -eq Desktop </pre> <br /> 오~~~ 이제야 좀 낯설지 않은 Shell Script가 된 것 같습니다. ^^<br /> <br /> 참고로, "<a target='tab' href='http://chentiangemalc.wordpress.com/2012/03/03/powershell-script-to-detect-if-nic-supports-win8-network-kernel-debugging/'>PowerShell Script to Detect If NIC Supports Win8 Network Kernel Debugging</a>" 글의 스크립트를 실행하려면 PowerShell 의 실행 정책을 변경시켜 줘야 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > File cannot be loaded because the execution of scripts is disabled on this system error in PowerShell ; <a target='tab' href='http://www.itexperience.net/file-cannot-be-loaded-because-the-execution-of-scripts-is-disabled-on-this-system-error-in-powershell/'>http://www.itexperience.net/file-cannot-be-loaded-because-the-execution-of-scripts-is-disabled-on-this-system-error-in-powershell/</a> 관리자 모드로 실행된 명령어 창에서 실행: Set-ExecutionPolicy Unrestrictedcls </pre> <br /> <hr style='width: 50%' /><br /> <br /> 그런데, 정작 중요한 "네트워크 카드로 직접 커널 디버깅(KDNET)"을 하는 방법에 대한 테스트를 할 수가 없군요. ^^; 아쉽게도 윈도우 8을 Hyper-V에 설치한 제 경우에는 테스트가 불가능했는데, 왜냐하면 Hyper-V가 제공하는 가상 네트워크 어댑터는 "<a target='tab' href='https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/supported-ethernet-nics-for-network-kernel-debugging-in-windows-8-1'>커널 디버깅이 가능한 네트워크 카드</a>"에 속하지 않기 때문입니다.<br /> <br /> 그래도 아쉬운 마음에 한번 시도는 해보았는데요. ^^ 네트워크 커널 디버깅에 대한 자료가 생각보다 없었는데, 하나 찾은 것이 있다면 지난번 Build 2011에서 다음과 같이 공개된 것이 전부인 듯합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Windows 8 kernel debugging: New protocols and certification requirements (HW-98P) ; <a target='tab' href='http://channel9.msdn.com/Events/BUILD/BUILD2011/HW-98P'>http://channel9.msdn.com/Events/BUILD/BUILD2011/HW-98P</a> </pre> <br /> 다행인 것은 ^^ 방법이 무척 간단하다는 점인데, 이러저러하게 COM 포트 설정할 필요 없이 디버깅 대상이 될 머신에서는 bcdedit로 다음과 같이만 실행해 주면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > bcdedit -dbgsettings net hostip:[디버거가 실행될 호스트 측 IP] port:[호스트 측의 디버거가 대기할 포트] * 지정 가능한 포트 범위는 49151 < port < 65536입니다. * 위와 같이 실행하면 화면에 key 문자열이 나옵니다. 그걸 복사해 두고, debug 기능을 다음과 같이 켜줍니다. bcdedit -debug on </pre> <br /> 아래는, 위의 명령어를 윈도우 8에서 실행 결과 화면입니다.<br /> <br /> <img alt='network_kernel_debug_1.png' src='/SysWebRes/bbs/network_kernel_debug_1.png' /><br /> <br /> 그다음, 별도의 컴퓨터로 마련된 호스트 측에서 windbg를 실행해 주어야 하는데요. 당연하지만, 기존 설치된 windbg는 "네트워크 커널 디버깅"을 지원하지 않기 때문에 새 버전을 다운로드 해야 합니다. <br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Download and Install Debugging Tools for Windows ; <a target='tab' href='https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk'>https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk</a> Windows Software Development Kit (SDK) for Windows 8 Consumer Preview ; <a target='tab' href='https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/'>https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/</a> </pre> <br /> WSDK 설치 시에 모든 구성요소를 선택할 필요 없이 "Debugging Tools for Windows"만 선택해 주셔도 됩니다. (168MB 정도 필요)<br /> <br /> 설치 후, Channel 9 비디오에 나온 대로 다음과 같이 입력했는데 이상하게 오류만 발생했습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > windbg -k net:port=50000, key=gppy78yj2w5d.34j4lx4l44273.13om3uf5me7yy.1yh8s2rvdmuhq </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > "The command line arguments cannot specify more than one kind of debugging to start" </pre> <br /> 어쩔 수 없이, 그냥 windbg를 실행하고 "File" / "Kernel Debug..."를 선택한 후 아래 화면과 같이 "NET" 탭에서 Port와 Key 값을 입력해 주고 실행해 주었습니다.<br /> <br /> <img alt='network_kernel_debug_2.png' src='/SysWebRes/bbs/network_kernel_debug_2.png' /><br /> <br /> 확인을 누르면 다음 화면과 같이 호스트 측에서 "대기"를 하게 되고, <br /> <br /> <img alt='network_kernel_debug_3.png' src='/SysWebRes/bbs/network_kernel_debug_3.png' /><br /> <br /> 이제 bcdedit.exe를 실행했던 대상 머신을 재부팅하면 bcdedit 명령인자로 전달했던 hostip/port 정보를 이용하여 호스트 측의 디버거로 연결을 시도하고 그 이후로 네트워크 커널 디버깅이 동작<span style='text-decoration: line-through'>됩니다.</span> 되어야 합니다. <br /> <br /> 이전에 말씀드린 대로... 애석하게도 여기까지 실습은 못했습니다. ^^; 그래도 혹시나 싶어서 해본 건데, 역시나 Hyper-V 가상 네트워크 어댑터는 이를 지원해 주지 않았습니다. (그럼... 윈도우 서버 8에 있는 Hyper-V는 이를 지원해 주지 않을까요? ^^) 어쨌든, Hyper-V 가상 머신에 대해서는 여전히 다음과 같은 전통적인 방법으로 커널 디버깅을 해야 할 것 같습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Windbg - Hyper-V 윈도우 7 원격 디버깅 구성 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/938'>http://www.sysnet.pe.kr/2/0/938</a> </pre> <br /> 허긴 어찌 보면, Remote Kernel Debugging 자체가 대개의 경우 물리 장치에 대한 디바이스 드라이버가 대상인 것을 감안하면 Hyper-V 가상 머신에서 이를 위한 지원을 포함하는 것은 별다르게 큰 의미가 될 것 같지는 않습니다. (그래도, 그렇지... ^^)<br /> <br /> 참고로, <a target='tab' href='http://channel9.msdn.com/Events/BUILD/BUILD2011/HW-98P'>Windows 8 kernel debugging: New protocols and certification requirements (HW-98P)</a>을 보면 USB 3.0을 이용한 디버깅 방법도 나오는데요. USB 2.0에 비해서 속도가 월등히 빠르다고 하며 디버깅 설정도 위에서 설정한 방법과 비슷하게 간단합니다. <br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1238
(왼쪽의 숫자를 입력해야 합니다.)