2013-02-05 83 views
5

Tôi đã có thứ này khiến tôi không thể hiểu được điều gì đang gây ra nó.VS Cửa sổ ngay lập tức - Tên không tồn tại trong ngữ cảnh hiện tại

Tôi có một khối mã nơi tôi đã đặt điểm ngắt. Nếu sau đó tôi sử dụng con trỏ và di chuột qua một biến, tôi thường có thể điều hướng nội dung và giá trị của biến đó.

Trong khi một số biến, tôi không thể xem nội dung, không có gì xuất hiện.

Ngoài ra, nếu tôi cố gắng điều tra những người tôi không thể qua cửa sổ ngay lập tức, nó nói với tôi The name 'temp' does not exist in the current context

Tôi thực sự khó chịu chỉ TẠI SAO điều này sẽ xảy ra, một số nguyên nhưng không phải người khác, một số đối tượng lớp nhưng không phải những người khác cùng loại.

Đóng Visual Studio và khởi động lại không khắc phục được.

Tôi đang chạy trong Debug không có tối ưu hóa.

Chỉ cần tìm kiếm trợ giúp về vấn đề này để cảm ơn trước.

Dưới đây là ví dụ về mã xảy ra, không có mã hoặc đại biểu đặc biệt. Nó cũng có thể xảy ra trong các phần ngẫu nhiên của chương trình ngay cả khi chỉ có một vài dòng mã.

segs2D = ConvertSegmentsTo3DLines(segs2D); 
IList<DSegment2D> segs3D = DSegment2D.Duplicate(segs2D); 
TransformSegments(segs3D, transform); 
foreach (var seg in segs3D) 
    MoveSegmentToSolid(seg, moveNormal, solid, false); 

Dictionary<double, Strategy> strategiesDic = new Dictionary<double, Strategy>(); 

double d1 = (double)(segs3D[0].GetP1Tag() ?? 0); 
double d2= (double)(segs3D[0].GetP2Tag() ?? 0); 
foreach (DSegment2D seg in segs3D) 
{ 
    d1= (double)(seg.GetP1Tag() ?? d1); 
    d2= (double)(seg.GetP2Tag() ?? d2); 
    ...Stuff 
} 

+1

Điều này có thể hữu ích nếu bạn có thể đăng một số mẫu mã thể hiện hành vi. Đã thêm –

+0

@AndrewCooper Code. –

+0

Và ... điểm ngắt hiện tại ở đâu. Và bạn có thể thấy biến nào và bạn có thể không thấy biến nào? –

Trả lời

0

Nó chỉ ra các mức độ phức tạp tuyệt đối của phương pháp và số lượng indents đã gây ra vấn đề vào thời điểm đó. Tôi đã kể từ khi đơn giản hóa và hoạt động nhiều mã ban đầu và không còn gặp vấn đề này nữa. Tôi cũng đã nâng cấp lên VS2012 cũng có thể hữu ích.

0

Có lẽ các biến chưa được công bố hoặc khởi tạo trong khối mã mà bạn đã nhấn breakpoint (ví dụ: thực hiện đã không nhận rằng đến nay).

Ví dụ, cả hai di chuột và các vấn đề Window Ngay lập tức bạn mô tả có thể xảy ra liên quan đến bar trong khối mã sau khi bạn nhấn breakpoint:

public class Whatever 
{ 
    public void DoSomething() 
    { 
     string foo = "blah"; // Breakpoint hit and execution stopped here. 

     // Do something. 

     DoSomethingElse(); 
    } 

    public void DoSomethingElse() 
    { 
     string bar = "yack"; 

     // Do something else. 
    } 
} 
+0

Chắc chắn không phải là vấn đề. Tôi biết điểm ngắt là mã tôi đang xem. –

+2

Có lẽ vậy, @Craig White. Người ta sẽ hy vọng như vậy. :) Luật phân tích cú pháp thường ở gốc rễ của những vấn đề này khi chúng tôi đã thuyết phục bản thân khác là tất cả những gì tôi đang nói - đặc biệt là trong mã với các vòng lặp lồng nhau ba lần. Trình gỡ lỗi dường như nghĩ rằng các biến nằm ngoài phạm vi và có thể là _most_ đúng. – J0e3gan

4

Ngoài ra, nếu tôi cố gắng điều tra những tôi có thể không thông qua cửa sổ ngay lập tức, nó nói với tôi tên 'tạm thời' không tồn tại trong bối cảnh hiện nay

cố gắng sử dụng tên đầy đủ của phương pháp

ví dụ:

namespace.class.method();

thay vì

class.method();

cũng có vẻ như cửa sổ ngay lập tức có sự phụ thuộc vào tệp/dự án được chọn hiện tại.

hy vọng điều này giúp Mathias

0

Tôi gặp sự cố tương tự.Tôi nghĩ rằng tôi đã ở Debug nhưng có một bước đơn giản hơn (nhưng quan trọng). Trong trường hợp "Cấu hình giải pháp" được đặt thành "Gỡ lỗi", tôi phải C ALNG nhấp vào mũi tên xuống bên cạnh “Gỡ lỗi” và chọn “Trình quản lý cấu hình…” và sau đó trong cửa sổ bật lên tương ứng “Cấu hình” vẫn được đặt thành “Phát hành” - I đã phải thay đổi điều đó thành "Gỡ lỗi" và nhấp vào nút "Đóng". Rerunning từ đó cho phép tôi xem tất cả các biến trong khi gỡ lỗi.

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