2010-01-17 37 views
9

Nói rằng tôi có những điều sauXem giá trị trả lại?

int num = 40 + str2Int("30");

Liệu có cách nào với visual studio 2008 để biết những gì Str2Int đang trở lại mà không bước vào chức năng và sẽ trở lại?

+0

Rõ ràng là tên của hàm chính nó đang chuyển đổi chuỗi thành Int. –

+0

Ví dụ của nó ... Cộng với những gì nếu chức năng bị lỗi và không trả về 30? Đó là lý do tại sao tôi hỏi điều này. Đó là một nỗi đau để tìm lỗi khi bạn có các cuộc gọi chức năng trong một biểu thức. – user230821

+1

Có gì sai khi bước vào chức năng và xem giá trị trả về? Đó là những gì trình gỡ lỗi được sử dụng. – jamesdlin

Trả lời

9

Trong cửa sổ biến "tự động", nó sẽ hiển thị kết quả của bất kỳ thao tác nào bạn vừa bước qua.

Chỉnh sửa: Xóa sự không chắc chắn về vị trí này (cảm ơn Michael Burr)

+0

Holy crap - Tôi không thể tin rằng tôi không biết điều đó! (đó là cửa sổ "Ô tô", BTW). Đây có phải là mới với VS2008 hoặc đã có nó ở đó trong nhiều năm? –

+0

+1. Tôi cũng không biết điều đó. Thật là một tính năng tuyệt vời! – wj32

+0

Cool, nó cho thấy "Str2Int trả về" và sau đó nó trở lại. Ngoài ra làm thế nào để bạn bước hoạt động? Bước vào chỉ đi vào chức năng và bước qua chỉ là bước toàn bộ dòng. @ Michael, nó đã ở đó một thời gian dài. Không bao giờ nhận thấy một sự khác biệt giữa nó và người dân địa phương cho đến bây giờ mặc dù. – user230821

0
cout << Str2Int("30") << endl; 

Hoặc!

cout << (num - 40) << endl; 
0

Cách đúng để lập trình là luôn viết đoạn mã nhỏ để kiểm tra cách hoạt động của mọi thứ. Ví dụ, nếu bạn muốn nghiên cứu hàm str2int (giống như một ví dụ, như bạn đã nói), hãy tạo một tệp thử nghiệm cho nó. Chạy nó với các thông số khác nhau, nghiên cứu cách nó hoạt động. Sau đó, cuối cùng bạn sẽ được thuyết phục rằng nó hoạt động chính xác và sẽ không cần phải bước vào nó bên trong các biểu thức. Khi các lập trình viên trở nên quen thuộc với các công cụ, họ tin tưởng chúng và không cần phải luôn kiểm tra cách chúng hoạt động.

Hơn nữa, nếu đây là hàm bạn đã thực hiện, thì hệ quả trực tiếp ở trên là tạo tệp có kiểm tra đơn vị cho nó. Bài kiểm tra đơn vị thực hiện chức năng theo nhiều cách khác nhau cho đến khi bạn có thể tin tưởng nó thực sự hoạt động.

+0

* Khi người lập trình trở nên quen thuộc với các công cụ, họ tin tưởng họ và không cần phải luôn kiểm tra cách họ làm việc. *: -1. Không cần phải đối phó với một thái độ ở đây, anh ấy hỏi làm thế nào để có được một loại thông tin chung từ trình gỡ rối. Việc anh ta sử dụng 'str2int' minh họa rằng anh ta * không * nghi ngờ thư viện. – Potatoswatter

+0

@eli - không phải lúc nào cũng tin tưởng vào chức năng này. Bạn có thể hoàn toàn không có lỗi, chức năng đáng tin cậy 100% và vẫn muốn xem đầu ra của nó là gì vì lý do đơn giản là bạn không biết đầu ra của nó là gì. Ví dụ, nếu tôi không biết con trỏ tập tin nằm trong một 'FILE', tôi không biết' fgetc() 'sẽ trả về cái gì, nhưng giá trị đó có thể khiến tôi quan tâm trong khi tôi đang gỡ lỗi . –

2

Bạn có thể sử dụng Cửa sổ ngay lập tức Visual Studio. Điều này sẽ cho phép bạn đánh giá các biểu thức khác nhau.

+0

Bạn có thể đưa ra một ví dụ không? Tôi không bao giờ có thể có được biểu hiện để làm việc trong đó. – user230821

0

Tôi không muốn điều này kể từ khi tôi sử dụng PowerPC và tôi không sử dụng bất kỳ thứ gì của Microsoft, nhưng có thể bạn muốn danh sách đăng ký và chế độ xem mã lắp ráp… MSVC phải có.

Dừng tại lệnh sau khi gọi hàm (nên dễ dàng chọn) và theo Wikipedia giá trị trả lại phải bằng EAX/RAX. Sao chép giá trị (hoặc tìm hiểu cú pháp của trình gỡ lỗi để tham chiếu thanh ghi) và truyền đến kiểu thích hợp.

2

Vì giá trị trả về thường trong sổ đăng ký EAX, bạn đặt biến số $eax 'trong cửa sổ xem. Khi bạn bước qua cuộc gọi hàm, những gì trong EAX là những gì mà hàm trả về.

Và nếu bạn cũng cung cấp biểu tượng định dạng hr trình gỡ lỗi sẽ hiển thị cho bạn thông báo lỗi HRESULT hoặc Win32 (như "S_OK" hoặc "Truy cập bị từ chối") thay vì chỉ là số nguyên. Có thể thuận tiện để có mỗi ($eax$eax,hr) trong các mục xem riêng biệt.

Một entry hữu ích là $err trong đó cho thấy bất cứ điều gì GetLastError() sẽ trở lại (và các biểu tượng định dạng hr có thể được áp dụng cho nó - hoặc bất cứ điều gì - cũng):

$eax 
$eax,hr 
$err 
$err,hr 

Lưu ý rằng phiên bản cũ của trình gỡ lỗi VS có thể muốn bạn sử dụng @ thay vì $ để bắt đầu các biến này, nhưng một thành viên của nhóm trình gỡ lỗi đã tuyên bố rằng $ được ưu tiên giữ mọi thứ phù hợp với bộ công cụ "Công cụ gỡ lỗi cho Windows" (tôi nghĩ rằng hỗ trợ cho @ là không được chấp nhận và có thể bị xóa tại một số điểm).

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