// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans 调试器中可视“步入”操作的视频
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans 调试器中可视“步入”操作的视频 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans 调试器中可视“步入”操作的视频

|===
|Roman Ondruska 使用可视方法调用选择器在 NetBeans 调试器中演示了“步入”操作。

作者：Roman Ondruska
播放时长：3:24

link:http://bits.netbeans.org/media/stepinto-debugger.mp4[+观看全图+]（按住 Ctrl 键单击即可下载，大小为 4 MB）


link:/about/contact_form.html?to=3&subject=Feedback:%20Visual%20Step%20Into%20Action%20in%20NetBeans%20Debugger[+发送有关此教程的反馈意见+]
 |         
|===


== 相关链接

* 演示：link:debug-deadlock-screencast.html[+使用 NetBeans 调试器进行死锁检测+]
* 演示：link:debug-evaluator-screencast.html[+在 NetBeans 调试器中使用代码片段计算器+]
* 演示：link:debug-multithreaded-screencast.html[+使用 NetBeans IDE 进行多线程调试+]
* link:debug-multithreaded.html[+在 NetBeans IDE 中调试多线程应用程序+]
