![](/img/trans.png)
[英]Tomcat console output in Eclipse: where is my System.out.print() output, how to debug?
[英]Debug with System.out.print in a loop (Eclipse)
令我驚訝的是,在以下程序中,循環中的Eclipse控制台無法打印。 它僅打印:“開始:完成”。 當我改用println的時候。 當我刪除評論時,它也是如此。 驚喜:當我在控制台中復制“開始:完成”行時,剪貼板中確實包含所有打印的數字。 有趣的是,這種行為的原因是什么?
public static void main(String[] args) {
System.out.print("start: ");
for (int i = 0; i < 10000; i++) {
// if (i > 1000 && i < 1010)
System.out.print(i + " ");
}
System.out.println("finish");
}
Java中的Println或print(“ \\ n”)在C&C ++中,刷新緩沖區並強制其打印緩沖區中的所有內容,但是當使用print白色而不用任何\\ n(換行)時,不一定是打印緩沖區
好吧,那里的線很長。 因此,您很有可能超出了Eclipse控制台可以可靠顯示的最大行長。 內容可能已經打印在此處(事實證明,當您復制和粘貼時內容出現在剪貼板中),但呈現效果不佳。
行為已確認。 奇怪,必須與Eclipse包裝的輸出流有關。 我的Eclipse 3.5。 如果內部緩沖沒有正確地刷新()或對於一行來說太寬,則可能會丟棄輸出。
package tests;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
public class EclipsePrint {
public static void main(String[] args) {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
PrintStream out = System.out;
System.setOut(new PrintStream(new BufferedOutputStream(bout), true));
System.out.print("start: ");
for (int i = 0; i < 10000; i++) {
// if (i > 1000 && i < 1010)
System.out.print(i + " ");
}
System.out.println("finish");
out.println(bout.size());
out.println(bout.toString());
bout = new ByteArrayOutputStream();
System.setOut(new PrintStream(new BufferedOutputStream(bout), true));
System.out.print("start: ");
for (int i = 0; i < 1000; i++) {
// if (i > 1000 && i < 1010)
System.out.print(i + " ");
}
System.out.println("finish");
out.println(bout.size());
out.println(bout.toString());
}
}
在Eclipse中的Run/Debug:Console:console buffer size (characters)
中有一個控制台設置,它允許您最多使用10 ^ 6個字符作為控制台緩沖區。 您的第一個循環超出了它。
在eclipse 3.4 / Mac OSx上進行了嘗試,當上限為1000時,打印效果很好,但是對於10000,顯示被截斷了。
代替System.out.print,使用System.out.println;。 這是針對每行的,它對我來說可以正常工作10000。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.