2015-05-01 16 views
5

Tôi hiện đang gặp một số sự cố khi gỡ lỗi hạt nhân của mục tiêu Windows 7 x64 từ máy chủ Windows 8.1 x64 của mình. Tôi đang chạy Visual Studio 2013 với WDK 8.1 trên máy chủ của tôi và đã cung cấp máy mục tiêu của tôi đang chạy trong VMWare.Windows Kernel Debbuging: Gỡ lỗi qua cổng nối tiếp ảo với WDK 8.1

Dưới đây là các cấu hình của tôi cho máy mục tiêu. Nó được cấu hình bằng cách đọc chủ yếu là từ đây - http://www.codeproject.com/Tips/545835/Kernel-Mode-Debugging-in-a-VM-using-Visual-Studio:

  • Windows 7 x64
  • cổng Serial COM2 với VMWare với tên \\ \ ống \ COM2.. Tất cả các tùy chọn thích hợp trong VMWare đều được kiểm tra
  • Cờ gỡ lỗi cho hệ điều hành được bật thông qua msconfig. Cổng gỡ lỗi là COM2 chạy ở 115200 baud.
  • Tôi chạy client mục tiêu thử nghiệm "WDK thử nghiệm Target cài đặt x64-x64_en-us.exe" trên máy tính trước khi trích lập dự phòng máy tính

tôi đã có thể cung cấp máy tính đúng cách - nó tạo ra WDK Hủy bỏ Tài khoản người dùng. Tuy nhiên, tôi đang chạy vào một số vấn đề thực sự gỡ lỗi. Dưới đây là các bước

  1. Launch Windows 7 hình ảnh mục tiêu x64 trong VMWare và chờ đợi vào lần khởi động trình đơn
  2. Trong Visual Studio (máy chủ), đi đến Debug -> Đính kèm để trình -> Chọn máy tính của tôi - > Chọn quá trình "Kernel" -> Đính kèm
  3. Trong VMWare, nhấn enter để khởi động Windows
  4. Phải mất một lúc, nhưng trên máy chủ của tôi, Visual Studio cuối cùng kết nối. Tôi có thể chọn "Break All" và thực sự sử dụng trình gỡ rối.

Tuy nhiên, dường như tôi không thể kết nối với trình gỡ lỗi nếu tôi không làm điều đó trước khi khởi động hạt nhân. Và tôi chỉ có thể đính kèm một lần. Ví dụ, tôi không thể để Windows khởi tạo máy tính để bàn và sau đó xây dựng trình điều khiển của tôi và bắt đầu gỡ lỗi. Trình gỡ lỗi sẽ luôn treo trên "Đang chờ kết nối lại ...". Điều tương tự cũng xảy ra nếu tôi bắt đầu gỡ lỗi khi khởi tạo hạt nhân, quyết định dừng gỡ lỗi, sau đó thử kết nối lại hoặc gắn lại; nó sẽ treo trên "Chờ đợi để kết nối lại ..." vô thời hạn là tốt.

+0

Xin chào @xtef_ bạn đã sửa lỗi này chưa? Tôi có vấn đề tương tự –

+0

Không phải hành vi bình thường này mà bạn chỉ có thể kết nối với hạt nhân trong khi khởi động? –

+0

@WouterHuysentruit Tôi không chắc chắn liệu đây có phải là hành vi bình thường hay không; Tôi đã đọc thông tin xung đột trực tuyến. Nếu đây là hành vi bình thường, thì điều đó có nghĩa là tôi chỉ có thể gỡ lỗi trình điều khiển của mình một lần trước khi cần khởi động lại máy? Bởi vì đó là trường hợp hiện tại. Trước khi thử với VS 2013 và WDK, tôi đã sử dụng VisualDDK http://visualddk.sysprogs.org/ và đã có thể tải/gỡ bỏ và gỡ lỗi trình điều khiển của tôi nhiều lần như tôi muốn. Hiện tại tôi có thể đính kèm một lần khi khởi động và sau đó không bao giờ đính kèm lại cho đến khi khởi động lại. –

Trả lời

2

Vui lòng sử dụng WinDbg để gỡ lỗi hạt nhân. WinDbg đi kèm với WDK, và nó sẽ giúp bạn tiết kiệm rất nhiều rắc rối vs sử dụng VS2013. Hãy xem Setting Up Kernel-Mode Debugging of a Virtual Machine Manually để được hướng dẫn chi tiết. Nếu bạn gặp khó khăn khi sử dụng WinDbg, tôi có thể giúp bạn, nhưng tôi đã từ bỏ việc gỡ lỗi hạt nhân bằng cách sử dụng VS2013.

+0

Tôi đang sử dụng WinDbg làm trình gỡ lỗi chế độ hạt nhân từ trong Visual Studio. Nếu tôi cố gắng khởi động WinDbg từ dòng lệnh thì tôi gặp vấn đề tương tự - tôi chỉ có thể đính kèm khi khởi động và đính kèm một lần trước khi cần khởi động lại máy ảo. Tôi _can_ gỡ lỗi, nhưng từ đọc của tôi (và kinh nghiệm trước đó với VisualDDK), nó cảm thấy như tôi đang làm điều gì đó sai trái. Tôi sẽ có thể tải/dỡ bỏ trình điều khiển của tôi nhiều lần và gỡ lỗi mà không cần khởi động lại máy ảo, vì nó dễ dàng làm việc với plugin VisualDDK đã lỗi thời như thế nào. –

+0

Trước tiên, tôi muốn nói rằng bạn sẽ có thể đính kèm trình gỡ lỗi của bạn nhiều lần và bất kỳ lúc nào. Thứ hai, bạn có thể vui lòng cung cấp thêm thông tin? (1) Bạn đã kiểm tra "CPU năng suất trong cuộc thăm dò ý kiến" khi bạn tạo đường ống có tên của bạn chưa? (2) Bạn có thể chia sẻ lệnh WinDbg của mình không? Của tôi trông giống như này 'windbg -k" com: port = \\. \ Pipe \ com_1, baud = 115200, đường ống, kết nối lại "'. (3) Bạn có thể chia sẻ bản in WinDbg của mình không? –

Các vấn đề liên quan