+1 thích
672 đã xem
trong Kiến thức CNPM bởi (4.8k điểm)
chọn lại thể loại bởi
Không biết có ai hay gặp vấn đề này giống mình khi xài Visual Studio (VS) không. Khi debug F10, nếu trong hàm main mà có lặp for hay while thì nó phải duyệt qua tất cả các vòng lặp mới tiếp tục được, chẳng hạn duyệt qua 100 lần:

int a[100];
for (int i = 0; i < 100; ++i)
       a[i] = i;

Như thế rất là lâu. Thường thì mình đưa vòng lặp vào một hàm con để skip qua cho dễ, nhưng liệu VS có tính năng skip loop hay còn có cách nào khác nhanh hơn không?

Mong mọi người giúp đỡ!
bởi (3.2k điểm)
thực sự là khi mới đọc câu này, cứ nghĩ là K14 cơ... =D
bởi (4.8k điểm)
Uhm @@ hồi giờ mình debug toàn dùng F10, F11 và cũng có dùng Breakpoint (trong hàm con) nữa nhưng không biết đến việc F5 để nhảy nhanh tới Breakpoint.
bởi (4.8k điểm)
-3 votes mà không một câu lý do...Có vẻ nhiều người trên đây thích down vote các câu hỏi kĩ thuật mà không đưa lý do nhỉ. Hèn chi số câu hỏi kĩ thuật vô cùng ít. Thật đáng tiếc, thái độ thế này thì thật khó học hỏi lẫn nhau, trở về với Stackoverflow vậy.
bởi (500 điểm)
@1212390: tôi thấy chẳng có gì đáng cười, hoặc là em đang đùa :). Một điều rất đơn giản với người này nhưng đôi khi nằm ngoài vùng kiến thức của người khác. Thay vì châm chọc em có thể trả lời giúp bạn hoặc vote up những câu trả lời đúng :)
bởi (3.2k điểm)
@ntrson: em đâu có cười gì đâu thầy, em chỉ nói suy nghĩ đầu tiên của em thôi, với lại ở dưới cũng đã có câu trả lời tốt rồi mà thầy (và em cũng đâu có vote down đâu nờ...)
bởi (2.7k điểm)
@1212486: Bạn bị vote down bởi vì đơn giản câu hỏi này không nằm trong mục kỹ thuật (thực tế mình cũng không biết phải hỏi ở đâu, nhưng không phải ở mục này)  Cụ thể: "Liên quan đến vấn đề kỹ thuật (tài khoản moodle, MSDNAA, phòng máy thực hành...) vui lòng đặt tags cho câu hỏi là [Kỹ-thuật]"
bởi (4.8k điểm)
đã sửa bởi
Cuối cùng thì cũng có người post được một cái lý do! ^^ Như thế mới giúp đỡ lẫn nhau được chứ. Uhm, bạn nói phải, để câu hỏi theo 1 trong mấy cái mục ấy thì phải có liên quan đến các bộ phận của khoa. Thật chất thì đặt tên "kỹ-thuật" cũng dễ gây hiểu nhầm lắm. Tương lai thì sao nhỉ? Mấy câu hỏi "kỹ thuật" dạng này thì được để đâu ta?
bởi (3.2k điểm)
vẫn còn cái 3 chấm đằng sau mà bạn, vậy thì các câu hỏi liên quan đến kĩ thuật lập trình thì phải hỏi ở đâu bây giờ....mình thích nhất cái mục này mà :'(
bởi (4.8k điểm)
Đáng tiếc là không thuộc bạn à :(
http://bit.ly/1rEG93H
"...liên quan đến các bộ phận của khoa"

3 Trả lời

+9 k thích
bởi (620 điểm)
đã được chọn bởi
 
Hay nhất
Bạn có thể đặt 1 checkPoint (phím tắt F9) vào 1 câu lệnh có tính thực thi khi debug. Khi đó nếu bạn nhấn F5 khi debug thì vs sẽ tới checkPoint đó (tức là skip qua vòng lặp rồi nhé ^^).
bởi (4.8k điểm)
It works!!! Thank you so much ^^
+11 k thích
bởi (2.2k điểm)
Nếu như bạn muốn bỏ qua vòng lặp, đặt một Breakpoint sau vòng lặp, và bấm Continue (F6 trong VS) thay vì phải chạy từng dòng bằng F10 (Step Over). Khi chọn continue chương trình sẽ chạy và dừng ở Breakpoint tiếp theo.

Trong trường hợp bạn muốn dừng bên trong vòng lặp ở vòng lặp thứ K nào đó, chẳng hạn vòng lặp thứ 90, bạn có thể vào khung Local, tìm giá trị biến i, và sửa lại i = 89 (gõ thẳng vào ô Local). Khi đó bạn tiếp tục F10 (step over), chương trình sẽ chạy vòng lặp với i++ là 90.

Khi muốn Debug với các giá trị biến mà bạn mong muốn, bạn cũng có thể làm tương tự
bởi (500 điểm)
Giả sử vòng lặp tính tổng dựa vào i, thì khi sửa i=89 thì giá trị tổng tích luỹ có thay đổi không Hải ?
bởi (2.2k điểm)
Em chưa coi kĩ trường hợp đó anh, vì em chỉ thử trong trường hợp duyệt và xử lý phần tử thứ i của mảng thôi :)
bởi (3.2k điểm)
nếu kết quả phụ thuộc vào từng giá trị của i thì khi bỏ qua một số giá trị của i như vậy thì kết quả sẽ khác với mong muốn (ví dụ đang tính tổng các i, và i hiện tại = 10 mà sửa lại thành 69 thì coi như các giá trị của i từ 11 đến 68 là không được tính vào tổng rồi), còn nếu muốn dừng lại ở i = 69 mà vẫn tính tổng của các i trước đó thì trong vòng for thêm vào dòng lệnh "if ( i == 69) { //do something } rồi đặt breakpoint ngay bên trong câu lệnh if này rồi cứ bấm f5 là nó sẽ dừng lại tại đây thôi...
0 k thích
bởi (200 điểm)

int a[100];
for (int i = 0; i < 100; ++i)
       a[i] = i;

 

Một cách khác nếu bạn không muốn đặt breakpoint, Right click sau dòng a[i] = i, chọn Run to Cursor.

Chào mừng đến với Q&A FIT. Bạn có thể đặt câu hỏi và nhận được câu trả lời từ các bộ phận hỗ trợ và những thành viên khác tại Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia TP.HCM. Bạn hãy đăng nhập bằng tài khoản Google để gửi hoặc trả lời các câu hỏi.
...