2012-12-20 54 views
8

Nhấn F12 trong khi chương trình đang chạy trong trình gỡ rối sẽ phá vỡ quá trình thực hiện và mở trình gỡ lỗi. Điều này hoạt động chính xác trên Windows XP (thử nghiệm với D2007 và XE2) nhưng không thành công trên Windows 7 và 8 (cũng được thử nghiệm với D2007 và XE2; thử nghiệm trên ba máy tính).F12 không hoạt động trong trình gỡ lỗi Delphi trên Windows 7/8

Registry được thiết lập đúng (Windows 7):

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug] "UserDebuggerHotKey" = dword: 00000000 "Debugger" = "\" C: \ Windows \ system32 \ vsjitdebugger.exe \ "-p% ld -e% ld"

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ AutoExclusionList] "DWM.exe" = dword: 00000001

Việc cài đặt XP cũng đặt "Auto" = "1" và bỏ qua AutoExclusionList nhưng sao chép những thay đổi đó trên máy tính Windows 7 hoàn thành không có gì.

Điều kỳ lạ là Delphi dường như đã biết về F12 đang được nhấn. Khi tôi chạy một chương trình trong một trình gỡ lỗi trên Windows 7 máy và nhấn F12, Event Log cửa sổ trong Delphi cho thấy

bắt đầu chủ đề: Chủ đề ID: 4080. Quy trình Project73.exe (7108)

Chủ đề Exit : ID chủ đề: 4080. Process Project73.exe (7108)

Chỉ là điểm ngắt không được kích hoạt và ứng dụng tiếp tục chạy.

Có ai biết cách khôi phục chức năng này trong Windows 7/8 không?

+0

Quay lại trong ngày, chúng tôi phải cài đặt một plugin IDE để dừng F12 vấp trên một 'int 3'. Chúng tôi sử dụng F12 như một phím tắt. Rất may MS đã loại bỏ 'int 3' trong các phiên bản gần đây của Windows. –

Trả lời

11

Trình gỡ lỗi thấy rằng một chuỗi mới được khởi động bởi Windows, nhưng nó không biết chuỗi đó là gì. Trong XP, luồng này chạy vào một điểm ngắt int 3 (DebugBreak()), nhưng dưới Vista và Windows 7+ điểm ngắt không bị nhấn nữa ngay cả khi bạn đặt khóa đăng ký.

Có tồn tại một plugin IDE Delphi bắt chủ đề và gọi hàm DebugBreak() WinAPI. http://andy.jgknet.de/blog/ide-tools/unsupported-tools/

+0

Cảm ơn, Andy, bạn cai trị! – gabr

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