2009-05-03 34 views
12

Tôi đang làm việc trên một chút C++ - Trò chơi trong Visual Studio 2008. Tôi muốn xem nội dung của một vector sau một vài giây hoặc sau khi tôi nhấn một số nút. Các điểm ngắt là vô dụng trong trường hợp này, bởi vì chúng dừng tôi ở mọi cuộc gọi của gameloop (~ 60 lần mỗi giây). Làm cách nào để gỡ lỗi trong trường hợp này?Làm thế nào để đăng nhập công cụ trong giao diện điều khiển trong Visual Studio C++

Cảm ơn!

Trả lời

11

Sử dụng hàm OutputDebugString từ Windows API. Bạn có thể gọi nó bất cứ lúc nào bạn muốn, ví dụ: mỗi vòng thứ 100 trong mã của bạn.

thông tin Chức năng là here

Vui lòng đọc tất cả các ý kiến ​​trên trang này - một số người cho rằng trong IDE của bạn (VS2008) đầu ra của chức năng này được thể hiện trong "Ngay lập tức cửa sổ" không phải là "Output".

+1

Đừng quên \ r \ n cho kết thúc dòng. – Zuuum

+0

Tất cả tài liệu tôi đã đọc cho đến nay nói rằng đầu ra "In thư" sẽ xuất ra cửa sổ Đầu ra.Nhờ bình luận của bạn, tôi đã có thể đào qua các biểu tượng và trình đơn mess (Debug-> Windows-> Ngay lập tức) và tìm thấy một "ngay lập tức" cửa sổ để hiển thị! Tất cả các tin nhắn tracepoint của tôi đột nhiên có thể nhìn thấy !! Cảm ơn nhiều. –

2

Bạn có thể đặt có điều kiện điểm ngắt, nghĩa là điểm ngắt chỉ chạm vào một vị trí nhất định chỉ khi biểu thức đã cho là đúng. Bạn có thể, ví dụ, thiết lập một điểm dừng mà chỉ truy cập mỗi lần thứ n trong một vòng lặp.

2

bạn có thể sử dụng đầu ra đơn giản cho bảng điều khiển.

nói rằng bạn muốn hiển thị một số nguyên, bạn chỉ có thể sử dụng printf ví dụ:

printf("the number is %d \n", vectorArray.at(place)); 
+2

này sẽ không hiển thị trừ A) của bạn ứng dụng được liên kết dưới dạng ứng dụng bảng điều khiển hoặc B), bạn đã mở bảng điều khiển trong ứng dụng của mình và chuyển hướng quảng cáo tới ứng dụng đó. –

1

Thiết lập một bộ đếm thời gian trôi qua và một cái gì đó cực kỳ cơ bản.

nếu elapsedTime> 3 giây: hits điểm break của bạn, hãy kiểm tra vector của bạn

Hoặc nếu bạn muốn dừng lại trên một điểm rất đặc biệt, chỉ cờ một bộ đếm để theo dõi có bao nhiêu khung hình bạn đã làm xong.

1

Cùng với các điểm ngắt có điều kiện, bạn cũng có thể có điểm ngắt ghi các giá trị vectơ vào bảng điều khiển và không dừng lại.

Nhấp chuột phải vào điểm ngắt của bạn và chọn "Khi nhấn", nhấp "in thư" rồi thêm giá trị của bạn vào thư trong dấu ngoặc nhọn. Sử dụng "Số lần truy cập" để có điểm ngắt thực thi sau nhiều chu kỳ. Tùy chọn "Điều kiện" cũng hữu ích cho việc thiết lập điểm ngắt phụ thuộc vào một giá trị nhất định trong các biến của bạn.

1

Bạn cũng có thể đặt breakpoint của bạn bên trong một đoạn mã có điều kiện, ví dụ:

if(keyPressed('S')) 
{ 
    int a = 42; // <-- set breakpoint here 
} 

Các pro vs một breakpoint có điều kiện là điều kiện có thể là một chút phức tạp hơn, các con là mỗi lần bạn cần thay đổi điều kiện, bạn cần phải biên dịch và liên kết ứng dụng của mình.

0

tôi phát hiện ra rằng nếu bạn bao gồm và sử dụng fprintf (stdout, "")

nó trả về một dấu nhắc lệnh trên màn hình trong khi chương trình của bạn vẫn chạy

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