⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.html

📁 jbuilder教程~!快来下载吧~! 这个很好快来啊~
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!-- saved from url=(0022)http://internet.e-mail -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="generator" content="Microsoft FrontPage 4.0">
<title>Building Applications: Debugging Java programs</title>
<meta name="Author" content="kt">
<link type="text/css" href="../jbdocs.css" rel="stylesheet">
</head>
<body bgcolor="#fefef2" style="FONT-SIZE: 9pt">
<a name="using_the_debugger"></a>
<STRONG><FONT color=#0080FF size=3 >调试 Java 程序</font></strong>           
<hr>
译者名字: zdx_nari(JD001)<br>   
邮件地址:<A href="mailto:zdx_nari@hotmail.com">zdx_nari@hotmail.com</A>
<p>调试就是在你的程序中定位和修改错误的过程。JBuilder的集成调试器使你能在JBuilder的环境中进行调试。  通过<a href="../ui/menus/mrun.html">Run</a>菜单条可以访问调试器的许多功能部件。你也可以在编辑器或在调试器中使用右击菜单来访问调试器的功能部件。</p>           

<p>当调试器暂停你的程序,你可以察看程序数据项的当前值。在调试期间修改数据值提供了在程序运行时,检验假想错误(bug)的方法。</p>

<p> 调试指南,请参阅 <a href="../tutorials/debug/dbtutorial.html">&quot;编译, 运行 和 调试.&quot;</a></p>           

<p> 其余的信息和技巧可以在以下特定的调试主题中得到:</p>

<ul>
<li> 如果你的程序使用了<code>JDataStore</code>组件,请参阅 <cite>JDataStore Programmer&#39;s Guide</cite> 的<a  href="../datastore/trouble.html">&quot;Troubleshooting&quot;</a> 章节。 <span class="bsku">(JBuilder Professional and Enterprise)</span></li>           

<li> 如果你正在调试一个分布式应用程序,请参阅  <cite>Distributed Application Developer&#39;s Guide</cite>的  <a href="../distributed/distdebugging.html">&quot;Debugging distributed applications&quot; </a>章节。<span class="bsku">(JBuilder Enterprise)</span></li>           
</ul>

<!--************************************************************--><a name="types_of_errors"></a>
<hr>
<p><font size="3" color="#000080"><b>错误类型</b></font></p>
<!--BNDX="errors:types of"-->
<p>调试器可以帮助找到运行器错误和逻辑错误。如果你找到或怀疑一个程序运行或逻辑错误,你可以通过在调试器的控制下运行你的程序从而开始一次调试过程(session)。 </p>

<a name="run-time_errors"></a>
<p><b><font color="#000080" size="2">Runtime errors</font></b></p>           
<!--BNDX="runtime:errors;runtime:exceptions;debugging:runtime exceptions"-->
<p>如果你的程序调试通过了,但当你运行它时却给出违例或悬挂(hang),你遇到了一个运行时错误。你的程序包含了有效的声明,但这些声明在它们被执行时导致了错误。例如,你的程序试着打开一个不存在的文件,或者使一个数字被零除。</p>

<p>没有调试器,运行时错误很难被定位,因为编译器并没有告诉你它们的任何情况。经常,你可以使用的唯一线索就是程序运行的结果,例如屏幕的外形以及由运行时间错误产生的错误消息。</p>

<p>尽管你可以通过搜索你的程序源代码找到运行时间错误,但调试器可以帮助你快速地捕捉到这些错误类型。使用调试器,你可以运行到一特定的程序位置。在那儿,你可以一次一个声明(one statement at a time)地执行你的程序,观察你程序每一步的行为。在那儿,你可以修改源代码,重新编译程序,继续测试你的程序。</p>           

<p>如果你的程序抛出了一个运行时间错误,将在<a href="#console_view">Console output, input, and errors view</a>打印一个堆迹(stack trace)。你可以双击堆迹的一行,来到对应的源文件中的那行代码。</p>           

<p>在下面的例子中,一字符串(&quot;<kbd>eeee</kbd>&quot;)替代一个数字进入一个输入域。<code>NumberFormatException</code> 违例将被抛出。<code>FloatingDecimal.java</code>的源代码在编译器中显示;这是被抛出违例其所在的类。</p>           

<p class="bfig">编译器中的运行时错误</p>

<p><img border="0" src="images/db_runtime_error.gif" width="602" height="490"> <!--************************************************************-->  
</p>



<a name="logic_errors"></a>
<p><font size="2" color="#000080"><b>逻辑错误</b></font></p>
<!--BNDX="logic errors;debugging:logic errors"-->
<p>逻辑错误是在你程序的设计和实现时所发生的错误。你程序的声明是有效的(它们执行有结果),但它们执行的行为并不是你写代码时你想象中的行为。例如,当变量包含了不正确的值,图像看起来不正确,或者当程序的输出不正确,就可能发生逻辑错误。</p>

<p> 逻辑错误经常是最难发现的错误类型,因为它们在你想不到的地方出现。为了确信你的程序是按照设计要求而工作的,你需要彻底测试程序的所有方面。只有通过细察用户接口和程序输出的每一部分,你才能确信程序的行为与它的设计是一致的。和运行时间错误一样,调试器帮助你在程序执行时监视你程序变量和数据对象的值,从而定位逻辑错误。</p>

<p>
<a name="overview_of_the_debugging_process"></a>
</p>
<hr>
<p><font size="3" color="#000080"><b>调试过程概览</b></font></p>
<!--BNDX="debugging:overview"-->
<p>程序设计后,程序编码和调试的不断循环组成了程序开发。只有在你彻底的测试了你的程序后,你才成发布你它。为了确信你测试了程序的所有方面,最好是有一个全面的测试和调试计划。</p>

<p>
一个好的调试方法包括了把你的程序分解成几个可以系统调试的不同片断(section)。通过紧密监视每一程序片断的声明,可以证实每一部分是按照设计来执行的。如果你发现了一个程序错误,你可以在一的源代码中改正这个问题,重新编译程序并继续测试。</p>

<p><span class="bscan">注意:</span> 你可以用支持JPDA debugging API的任何JDK进行调试。通常,你将用JBuilder装载的JDK版本进行调试。<a name="compiling_with_debug_info"></a></p>            
<p><font color="#000080" size="2"><b>用符号化调试信息编译工程</b></font></p>
<!--BNDX="compiling:programs with debug info;debugging:compiling with debug info;debug information:"-->
<p>当你开始一次调试过程时,你需要用符号化调试信息编译你的工程。符号化调试信息使调试器在你的程序源代码和编译器产生的Java 字节码之间进行连接。</p>           
<p>默认情况时,JBuilder在你编译时包括符号化调试信息。为了确信当前工程设置了这个选项,</p>

<ol>
<li>选择 Project|Project Properties,打开工程属性对话框。</li>           
<li>选择 Build 标签</li>           
<li>检查这些调试选项的一种:

<ul>
	<li>Source , Line and Variable Information: 当你编译,构造,或者重建一个节点时,包含了在<code>.class</code>文件中的源名,行数以及当地变量信息的调试信息。</li>           
	<li>Source And Line Only: 当你编译,构造,或者重建一个节点时,仅包含了在<code>.class</code>文件中的源名,行数的调试信息。</li>           
	<li>Source Only: 当你编译,构造,或者重建一个节点时,仅包含了在<code>.class</code>文件中的源名的调试信息。</li>           
</ul>
</li>
</ol>

<p>为了给所有新的工程设置这个选项,选择 Project|Default Project Properties,然后在 Build 页选择位于第一的三个调试选项的一种。(设置默认的工程属性并不影响已存在的工程。)</p>           

<p> 如果你选择了不包括任何调试信息的 None 选项,你仍可以进行调试。没有调试信息,<kbd>this</kbd>对象仍可以用来调试。通过选择这个选项,你可以显著地把类的尺寸减为最小。</p>           


<p><span class="bscan">注意:</span> 你不能在Java API 类中看到变量信息,因为它们编译时仅有源名和行数信息。然而,你可以跟踪进类里。学习怎样跟踪进类里,请参阅 <a href="debug2.html">&quot;Controlling which classes to trace into.&quot;</a> </p>           
<p>当你产生符号化的调试信息,编译器把这些信息存入相关的<code>.class</code>文件中。这就使得<code>.class</code>文件比不带调试信息而编译的文件大许多。你可以在部署前把这个选项关掉。</p>

<p>为了在调试前自动进行编译,在 Project Properties 对话框 Run 页中选中 Compile Before Debugging 选项。 这个选项可以用来在调试器的控制下在你的工程运行前自动的编译它。如果不选中这个选项,JBuilder将在调试你的工程前不编译它,所以你的源文件和类文件会失去同步。如果这个选项被关了,先使用 Project|Make 命令。</p>           

<a name="starting_debugger"></a>
<p><font color="#000080" size="2"><b>启动调试器</b></font></p>
<!--BNDX="debugging:starting;starting:the debugger"-->
<p>一旦在编译你的工程时包含了调试信息,你可以用以下的菜单项来启动调试器。</p>

<p class="btbl">启动调试器的菜单命令</p>

<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th style="background-color: #000080"><font color="#FFFFFF" size="2">命令</font></th>
<th style="background-color: #000080"><font color="#FFFFFF" size="2">快捷键</font></th>
<th style="background-color: #000080"><font color="#FFFFFF" size="2">描述</font></th>
</tr>

<tr>
<td><font size="2">Run|Debug Project</font></td>           
<td><font size="2"><kbd>Shift + F9</kbd> or &#160;<img src="images/toolbardebug.gif" align="top"></font></td>           
<td><font size="2">在调试器里启动程序,在一个断点或首先需要用户输入的第一行代码前暂停执行。</font></td>
</tr>

<tr>
<td><font size="2">Run|Step Over</font></td>           
<td><kbd><font size="2">F8</font></kbd></td>
<td><font size="2">在可执行代码的第一行暂停执行</font></td>
</tr>

<tr>
<td><font size="2">Run|Step Into</font></td>           
<td><kbd><font size="2">F7</font></kbd></td>
<td><font size="2">在可执行代码的第一行暂停执行</font></td>
</tr>
</table>

<p>如果你还没为你的程序选择  main 类,Project Properties 对话框的 Run 页在调试过程开始前将被显示。对于程序来说,选择包含<code>main()</code>方法的类。对于小应用程序来说,选择包含<code>init()</code>方法的类或小应用程序的 HTML 文件。 </p>           

<p>在你的工程中要调试一个特定的类,而不是整个工程,在浏览窗中选中这个文件,右击并选中 Debug。</p>           

<p> 每次当你启动调试器时,你就启动了一次调试过程。更多信息,参阅 <a href="#debugging_session">&quot;Debugging sessions.&quot;</a></p>           

<p><span class="bscan">注意:</span> 为一次调试过程选择一个调试配置,点击主菜单栏中的 Debug Projec 图标右边的向下箭头。关于调试配置的更多信息,参阅 <a href="debug5.html">&quot;Creating debugger configurations.&quot;</a><a name="run_under_debugger"></a> </p>           
<p><font color="#000080" size="2"><b>在调试器的控制下运行</b></font></p>
<!--BNDX="debugger:running under control of;running:under debugger control"-->
<p>当你在在调试器的控制下运行你的程序,程序的行为和通常的一样---你的程序创建窗口,接受用户输入以及显示输出。调试器可以中断的程序,允许你使用调试器的视图来检查程序的当前状态。通过观察变量值,调用栈上的方法以及程序输出,你可以确信你正在检查的代码区执行起来就像它被设计的那样。</p>

<p>   当你在在调试器的控制下运行你的程序时,你可以看到你程序在其创建的窗口中的行为。当你调试时,放置好窗口从而你可以同时看到调试器和你的应用程序窗口。当焦点在调试器视图和你的应用程序间相互转换时,为了防止窗口的闪烁,排列窗口使它们不重叠。</p>

<a name="pause_program_execution"></a>
<p><font size="2" color="#000080"><b>中断程序执行</b></font></p>
<!--BNDX="debugging:pausing program execution;pausing program execution"-->
<p>当你在使用调试器时,你的程序处于两种可能的状态之一:<em>运行</em> 或者 <em>暂停</em></p> 

<ul>
<li>当调试器工具栏的 Pause 图标<img border="0" src="images/db_toolbar_pause.gif">处于可用状态,你的程序正在运行。</li>         

<li>当你点击 Pause 图标,你的程序就被中断。当你的程序被中断,你可以检查数据值。调试器工具栏的步进(stepping)图标变得可用。碰到一个断点或由步进而停止也可以中断执行。</li>           
</ul>

<p>为了恢复程序的执行,选中调试器工具栏的 Resume Program 图标 &#160;<img border="0" src="images/db_toolbar_resume.gif">&#160;。当调试过程结束,这个图标变为 Restart Program 图标&#160;<img src="images/toolbardebug.gif" align="top">&#160; ,并重新开始调试过程。</p>           

<a name="end_debugging_session"></a>
<p><font color="#000080" size="2"><b>结束调试过程</b></font></p>
<!--BNDX="debugging:ending session;ending debugging session"-->
<p>为了结束当前的调试过程并释放程序占用的资源,选中 Reset Program 图标&nbsp;<img src="images/db_toolbar_reset.gif" align="top">。</p>           

<p>你也可以退出程序而关闭调试过程。若要移掉调试栏,右击调试栏并选中 Remove。</p>           

<hr>
<br>
<a name="debugger_ui"></a> 
<p><font color="#000080" size="3"><b>调试器用户界面</b></font></p>
<!--BNDX="debugger:user interface"-->
<p>如果工程或类编译成功,调试器就在 AppBrowser 的底部显示出来。 </p>           
<ul>
<li>在 AppBrowser 的底部的水平标签代表了 <a href="#debugging_session">调试过程(debugging sessions)。</a></li>每一个标签代表了一个新的过程。           

<li>在 AppBrowser 左面较底部分的垂直标签代表了 <a href="#debugger_views">调试器视图(debugger views)。</a></li>试图显示了当前被选的调试过程。每个试图显示了图标,用来指出在视图中的被选的每一项的状态和类型。           

<li><a href="#debugger_toolbar">调试器工具栏</a> 用来显示当前被选的调试过程。</li>
</ul>

<p class="bfig">调试器用户界面</p>

<p><img border="0" src="images/db_in_appbrowser_overview.gif" width="630" height="546"> </p>

<a name="debugging_session"></a>
<p><font color="#000080" size="2"><b>调试过程</b></font></p>
<!--BNDX="debugging:sessions"-->
<p>调试器允许你在多个调试过程中调试多个进程。多个进程可以在同一个 JBuilder 工程中,或在不同的工程中。这就允许在同一个 JBuilder 实例中,同一时刻,同时调试客户端和服务器端进程。 </p>           
<p>在每个单独的工程中存储了跟踪关闭的观察点(watches),断点和类。在一个工程中,所有的断点和观察点应用到了所有的进程中。可以为一个运行时配置有选择地关闭断点。

<p>当你在 Run 菜单条使用除了Run Project, Debug Project 和 Configurations 外的命令时,你仍在被选的调试过程中。当你使用调试器工具郎中的图标时,你同样仍在被选的调试过程中。Configurations </p>           

<p>为了结束当前的调试过程并释放程序占用的资源,选中 Reset Program 图标&nbsp;<img border="0" src="images/db_toolbar_reset.gif">。你也可以通过右击调试过程标签并选中 Remove Tab 来退出程序。尽管在标签被移走前你将快速地结束进程,但首先使用 Run|Rest Program 是个好主意。</p>           

<a name="debugger_views"></a>
<p><b><font size="2" color="#000080">调试器视图</font></b></p>
<!--BNDX="debugger:views"-->
<p>调试器视图允许你看到你程序的内部及看到下一步将发生什么。你使用调试器视图来检查和改变数据值,在你的程序中向前和向后跟踪,检查一个方法的内部处理过程和那个方法的调用,在你的程序中跟随一个独立的线程。</p>

<p>调试器视图在 AppBrowser 的底部显示。选中在调试器左边的标签从而选择某个视图。视图(除了 Console output, input, and errors 视图)也可以作为浮动窗口而显示。浮动窗口允许你在同一时间看见多个调试器视图,而不是不得不在视图间前后切换。 <span class="bsku">(浮动窗口是 JBuilder Professional and Enterprise 的一项属性)</span></p>           

<ul>
<li>要使一个视图作为一个浮动窗口显示,右击这个视图的空白区域,然后选择 Floating Window 。 </li>           

<li>要关闭浮动窗口,点击浮动窗口的 Close(关闭) 按钮或者右击这个视图的空白区域并除去 Floating Window 选择。</li>           

<li>在你关闭了浮动窗口后,要恢复默认的视图顺序,右击视图的空白区域,然后选中 Restore Default View Order。</li>           
</ul>

<p>调试器视图也有右击菜单。这些菜单的命令经常同那些在 Run 或 View 菜单里的命令是重复的,这样就使你可以容易地控制调试器。</p>           

<p>另外,每一个调试器的视图显示了不同的图标来指明所选项的状态。例如,一个断点可以被禁止(disabled),检验(verified),未检验(unverified),或者是无效的(invalid) - 每一个状态用视图左边缘的一个小图标来可视化的指明。</p>           

<p>调试器的视图,图标以及右击菜单在下面描述。</p>


<a name="console_view"></a> 
<p><font color="#000080" size="2"><b>Console output, input, and errors 视图</b></font></p>           

<!--BNDX="debugger:Console output, input, and errors view;Console output, input, and errors view"-->
<p>Console output, input, and errors 视图&nbsp;<img src="images/dbconsole.gif" border="0" align="bottom"> 显示程序的输出以及程序内的错误。它也允许你输入程序所需的任何输入。如果程序有任何的输出或任何的错误消息被显示出来,那么图标上的图像就发生变化。</p>           

<p>运行时间违例在这个视图中显示。</p>

<p class="btbl">Console output, input, and errors 视图中的图标</p>           

<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th style="background-color: #000080"><font color="#FFFFFF" size="2">图标</font></th>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -