fixed bz#267533 - NullPointerException at org.netbeans.modules.cnd.debugger.gdb2.GdbHandlerExpert.appendCommandStart
1.1 --- a/cnd.debugger.gdbserver/nbproject/project.xml Sun Dec 04 19:42:56 2016 +0300
1.2 +++ b/cnd.debugger.gdbserver/nbproject/project.xml Thu Dec 08 15:54:27 2016 +0300
1.3 @@ -15,6 +15,15 @@
1.4 </run-dependency>
1.5 </dependency>
1.6 <dependency>
1.7 + <code-name-base>org.netbeans.api.progress</code-name-base>
1.8 + <build-prerequisite/>
1.9 + <compile-dependency/>
1.10 + <run-dependency>
1.11 + <release-version>1</release-version>
1.12 + <specification-version>1.47.1</specification-version>
1.13 + </run-dependency>
1.14 + </dependency>
1.15 + <dependency>
1.16 <code-name-base>org.netbeans.modules.cnd.api.remote</code-name-base>
1.17 <build-prerequisite/>
1.18 <compile-dependency/>
2.1 --- a/cnd.debugger.gdbserver/src/org/netbeans/modules/cnd/debugger/gdbserver/Bundle.properties Sun Dec 04 19:42:56 2016 +0300
2.2 +++ b/cnd.debugger.gdbserver/src/org/netbeans/modules/cnd/debugger/gdbserver/Bundle.properties Thu Dec 08 15:54:27 2016 +0300
2.3 @@ -7,3 +7,4 @@
2.4 CTL_GdbServerAttachPanel_name=gdbserver
2.5 GdbServerAttachPanel.projectLabel.text=Project:
2.6 GdbServerAttachPanel.jLabel1.text=Target:
2.7 + GdbServerAttachPanel.progress=Starting gdbserver
3.1 --- a/cnd.debugger.gdbserver/src/org/netbeans/modules/cnd/debugger/gdbserver/GdbServerAttachPanel.java Sun Dec 04 19:42:56 2016 +0300
3.2 +++ b/cnd.debugger.gdbserver/src/org/netbeans/modules/cnd/debugger/gdbserver/GdbServerAttachPanel.java Thu Dec 08 15:54:27 2016 +0300
3.3 @@ -50,13 +50,14 @@
3.4
3.5 import java.beans.PropertyChangeListener;
3.6 import javax.swing.JPanel;
3.7 +import org.netbeans.api.progress.BaseProgressUtils;
3.8 +import org.netbeans.api.project.Project;
3.9 import org.netbeans.modules.cnd.api.remote.RemoteSyncSupport;
3.10 import org.netbeans.modules.cnd.debugger.common2.debugger.NativeDebuggerInfo;
3.11 import org.netbeans.modules.cnd.debugger.common2.debugger.NativeDebuggerManager;
3.12 import org.netbeans.modules.cnd.debugger.common2.debugger.debugtarget.DebugTarget;
3.13 import org.netbeans.modules.cnd.debugger.common2.debugger.options.DebuggerOption;
3.14 import org.netbeans.modules.cnd.debugger.common2.debugger.remote.CndRemote;
3.15 -import org.netbeans.modules.cnd.debugger.common2.ui.ExecutableProjectPanel;
3.16 import org.netbeans.modules.cnd.debugger.common2.utils.ProjectComboBoxSupport;
3.17 import org.netbeans.modules.cnd.debugger.common2.utils.ProjectComboBoxSupport.ProjectCBItem;
3.18 import org.netbeans.modules.cnd.debugger.gdb2.options.GdbDebuggerInfoFactory;
3.19 @@ -65,6 +66,7 @@
3.20 import org.netbeans.modules.nativeexecution.api.ExecutionEnvironment;
3.21 import org.netbeans.spi.debugger.ui.Controller;
3.22 import org.openide.util.HelpCtx;
3.23 +import org.openide.util.NbBundle;
3.24 import org.openide.util.NbPreferences;
3.25
3.26 /**
3.27 @@ -151,7 +153,7 @@
3.28
3.29 @Override
3.30 public boolean ok() {
3.31 - String targetValue = targetTF.getText();
3.32 + final String targetValue = targetTF.getText();
3.33 if (targetValue.length() == 0) {
3.34 return false;
3.35 }
3.36 @@ -159,24 +161,32 @@
3.37 //store last values
3.38 NbPreferences.forModule(GdbServerAttachPanel.class).put(TARGET_KEY, targetValue);
3.39
3.40 - ProjectCBItem pi = (ProjectCBItem) projectCB.getSelectedItem();
3.41 + final ProjectCBItem pi = (ProjectCBItem) projectCB.getSelectedItem();
3.42 if (pi != null) {
3.43 - MakeConfiguration conf = ConfigurationSupport.getProjectActiveConfiguration(pi.getProject()).clone();
3.44 - DebugTarget dt = new DebugTarget(conf);
3.45 -
3.46 - // set executable
3.47 - String path = conf.getAbsoluteOutputValue().replace("\\", "/"); // NOI18N
3.48 - ExecutionEnvironment exEnv = conf.getDevelopmentHost().getExecutionEnvironment();
3.49 - path = RemoteSyncSupport.getPathMap(exEnv, pi.getProject()).getRemotePath(path, true);
3.50 - dt.setExecutable(path);
3.51 + final Project project = pi.getProject();
3.52 + BaseProgressUtils.showProgressDialogAndRun(new Runnable() {
3.53 + @Override
3.54 + public void run() {
3.55 + MakeConfiguration conf =
3.56 + ConfigurationSupport.getProjectActiveConfiguration(project).clone();
3.57 + DebugTarget dt = new DebugTarget(conf);
3.58
3.59 - // always use gdb
3.60 - NativeDebuggerInfo gdi = GdbDebuggerInfoFactory.create(dt,
3.61 - CndRemote.userhostFromConfiguration(conf), conf, NativeDebuggerManager.ATTACH, targetValue);
3.62 - String symbolFile = DebuggerOption.SYMBOL_FILE.getCurrValue(gdi.getDbgProfile().getOptions());
3.63 - symbolFile = ((MakeConfiguration) conf).expandMacros(symbolFile);
3.64 - gdi.setSymbolFile(symbolFile);
3.65 - NativeDebuggerManager.get().debugNoAsk(gdi);
3.66 + // set executable
3.67 + String path = conf.getAbsoluteOutputValue().replace("\\", "/"); // NOI18N
3.68 + ExecutionEnvironment exEnv = conf.getDevelopmentHost().getExecutionEnvironment();
3.69 + path = RemoteSyncSupport.getPathMap(exEnv, project).getRemotePath(path, true);
3.70 + dt.setExecutable(path);
3.71 +
3.72 + // always use gdb
3.73 + final NativeDebuggerInfo gdi = GdbDebuggerInfoFactory.create(dt,
3.74 + CndRemote.userhostFromConfiguration(conf), conf,
3.75 + NativeDebuggerManager.ATTACH, targetValue);
3.76 + String symbolFile = DebuggerOption.SYMBOL_FILE.getCurrValue(gdi.getDbgProfile().getOptions());
3.77 + symbolFile = ((MakeConfiguration) conf).expandMacros(symbolFile);
3.78 + gdi.setSymbolFile(symbolFile);
3.79 + NativeDebuggerManager.get().debugNoAsk(gdi);
3.80 + }
3.81 + }, NbBundle.getMessage(GdbServerAttachPanel.class, "GdbServerAttachPanel.progress"));//NOI18N
3.82 // try {
3.83 // GdbDebugger.attachGdbServer(target, pi.getProjectInformation());
3.84 // } catch (DebuggerStartException dse) {