// 
//     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 IDE 进行多线程调试的视频
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 使用 NetBeans IDE 进行多线程调试的视频 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 使用 NetBeans IDE 进行多线程调试的视频

|===
|Roman Ondruska 演示了 NetBeans IDE 的多线程调试功能，包括在多线程环境中挂起线程、步入选定线程以及处理断点。

作者：Roman Ondruska
播放时长：7:19

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


link:/about/contact_form.html?to=3&subject=Feedback:%20Multithreaded%20Debugging%20With%20the%20NetBeans%20IDE[+发送有关此教程的反馈意见+]
 |       
|===


== 相关链接

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