2011-11-22 11 views
5

Chương trình của tôi hoạt động tốt với windows xp. Tôi đang cố thêm một số chức năng khác và sử dụng OutputDebugString() để hiển thị một số thông tin gỡ lỗi. hoạt động hoàn hảo trên XP. Bây giờ khi tôi muốn sử dụng cùng một chương trình trên windows 7x64. Tôi không thấy bất kỳ đầu ra nào trong DebugView.OutputDebugString() không hoạt động trên Windows 7x64

F1!F1!F1!

+0

'OutputDebugString' hoạt động trong 7 x64 tốt. 'DebugView' cũng hiển thị đầu ra của các applciations. –

Trả lời

11

Xin lỗi vì đã hồi sinh câu hỏi cũ nhưng chúng tôi đã dành một vài ngày để tìm kiếm câu trả lời này và cuối cùng đã kết thúc cuộc gọi kết nối. Tôi đăng bài ở đây để giúp đỡ bất cứ ai khác trong tình huống tương tự. Vấn đề cụ thể của chúng tôi đã nhận được đầu ra từ OutputDebugString, MFC TRACE vv trong cửa sổ đầu ra gỡ lỗi khi gỡ lỗi một ứng dụng chế độ hỗn hợp x64.

Theo Microsoft, dường như để gỡ lỗi các ứng dụng chế độ hỗn hợp x64, loại trình gỡ lỗi 'tự động' (được đặt trong trang thuộc tính Kiểu gỡ lỗi-> Trình gỡ lỗi) mặc định được quản lý chứ không phải hỗn hợp. Điều này sẽ cần phải được đặt rõ ràng thành 'Hỗn hợp' cho cả đầu ra gỡ lỗi được quản lý và bản địa để được nhìn thấy khi gỡ lỗi bản dựng 64 bit.

+1

Trong trường hợp của tôi, tôi đã gọi chuỗi đầu ra gỡ lỗi từ một phần mở rộng IE. IE nói chung không cho phép giao tiếp như vậy. Vì vậy, tôi đã kết thúc chạy IE với tư cách quản trị viên và cũng chạy DebugView với tư cách quản trị viên. – vrrathod

+0

Trong trường hợp của tôi, tôi đã gọi OutputDebugStringW. Thay đổi điều này thành OutputDebugStringA hoạt động chính xác. –

3

3 gợi ý nhỏ:

  1. chắc chắn rằng bạn đang thực sự nắm bắt các sự kiện (menu trên cùng -> chụp -> chụp win32 được đánh dấu)
  2. nếu bạn chương trình đang chạy trong tính toàn vẹn thấp (nó có cung cấp cảnh báo bảo mật khi bạn đang chạy nó), bạn cần phải chạy chế độ xem gỡ lỗi với tính toàn vẹn thấp. để làm điều đó bạn cần phải thay đổi mức độ toàn vẹn của dbgview.exe trước khi chạy nó.
  3. nếu bạn đang sử dụng studio trực quan và chạy với trình gỡ lỗi (nhấn F5) thì đầu ra gỡ lỗi thực sự được chụp bởi studio trực quan (trong cửa sổ đầu ra). thử chạy chương trình của bạn với ctrl f5.
2

Có một số lý do khiến điều này có thể có hoặc không hoạt động. Tôi vô tình bị vô hiệu hóa này - đây là tất cả những điều bạn cần phải kiểm tra để làm việc này:

  1. là văn bản kết xuất debug bị chuyển hướng khỏi khung Output để khung Immediate, do đó bạn không nhìn thấy nó? Để bật tắt này:

    • Debug
    • Options and Settings
    • [ ] Redirect all Output Windows text to the Immediate Window
  2. là khung Output thấy được?

    • Debug
    • Windows
    • Output
  3. Trong cửa sổ Output làm bạn có Program Outputkích hoạt?

    • Debug
    • Windows
    • Output
    • Right-Click bất cứ nơi nào bên trong cửa sổ
    • [x] Program Output
  4. Bạn có quyền Debugging Type đã chọn?

    • Trong Solution Explorer (View> Solution Explorer) pane
    • Nhấp chuột phải vào dự án của bạn
    • Properties
    • Debugging
    • Debugging Type: thay đổi từ Auto hoặc là Native hoặc Mixed
  5. Trình gỡ lỗi đã cố gắng được đính kèm trước khi chương trình đã bắt đầu chưa? Để bật Attachoff:

    • Trong Solution Explorer (View> Solution Explorer) pane
    • Nhấp chuột phải vào dự án của bạn,
    • Properties
    • Debugging
    • Attach: thay đổi để No
  6. Bạn đang sử dụng OutputDebugStringW()? Hãy thử sử dụng OutputDebugStringA() để thay thế.

  7. Cuối cùng, bạn có bắt đầu chương trình ở chế độ gỡ lỗi không? :-) Này, bạn không bao giờ biết!

    • Debug
    • Start Debugging (F5)

tôi đã không nhìn thấy một danh sách toàn diện trước khi để ở trên là tất cả những gì tôi phải xác minh đã được thiết lập một cách chính xác.