Changeset 96888 in vbox for trunk/src/VBox/Main
- Timestamp:
- Sep 26, 2022 7:29:50 PM (2 years ago)
- Location:
- trunk/src/VBox/Main
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/Makefile.kmk
r96572 r96888 648 648 src-server/CloudNetworkImpl.cpp \ 649 649 ,) \ 650 src-server/GuestDebugControlImpl.cpp \ 650 651 src-server/GuestOSTypeImpl.cpp \ 651 652 src-server/HostDnsService.cpp \ -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r96788 r96888 6672 6672 <interface 6673 6673 name="IMachine" extends="$unknown" 6674 uuid=" 9fbd57c7-e1b2-4baa-bbfb-ae831c06f32b"6674 uuid="300763af-5d6b-46e6-aa96-273eac15538a" 6675 6675 wsmap="managed" 6676 6676 rest="managed" … … 7446 7446 Key store used for encrypting the log files. 7447 7447 Internal use only for now. 7448 </desc> 7449 </attribute> 7450 7451 <attribute name="guestDebugControl" type="IGuestDebugControl" readonly="yes"> 7452 <desc> 7453 Guest debugging configuration. 7448 7454 </desc> 7449 7455 </attribute> … … 23919 23925 <interface 23920 23926 name="IInternalSessionControl" extends="$unknown" 23921 uuid=" a797fb40-7e04-4aa5-88c5-299aa0454577"23927 uuid="5045c372-2e8f-4d9e-ad9d-121ab1661146" 23922 23928 internal="yes" 23923 23929 wsmap="suppress" … … 24319 24325 </desc> 24320 24326 <param name="global" type="boolean" dir="in"/> 24327 </method> 24328 24329 <method name="onGuestDebugControlChange"> 24330 <desc> 24331 Triggered when settings of the guest debug settings of the 24332 associated virtual machine have changed. 24333 24334 <result name="VBOX_E_INVALID_VM_STATE"> 24335 Session state prevents operation. 24336 </result> 24337 <result name="VBOX_E_INVALID_OBJECT_STATE"> 24338 Session type prevents operation. 24339 </result> 24340 24341 </desc> 24342 <param name="guestDebugControl" type="IGuestDebugControl" dir="in"/> 24321 24343 </method> 24322 24344 … … 26071 26093 26072 26094 <!-- 26095 // IGuestDebugControl 26096 ///////////////////////////////////////////////////////////////////////// 26097 --> 26098 <enum 26099 name="GuestDebugProvider" 26100 uuid="acdaddc5-aa0f-4f2e-be1f-a9be2828d24a" 26101 > 26102 <desc> 26103 The enabled guest debug provider. This enumeration represents possible 26104 values for the <link to="IGuestDebugControl::debugProvider"/> attribute. 26105 </desc> 26106 <const name="None" value="0"> 26107 <desc>Guest debugging is disabled.</desc> 26108 </const> 26109 <const name="Native" value="1"> 26110 <desc>The native debugger console is enabled.</desc> 26111 </const> 26112 <const name="GDB" value="2"> 26113 <desc>The GDB remote stub is enabled.</desc> 26114 </const> 26115 <const name="KD" value="3"> 26116 <desc>The WinDbg/KD remote stub is enabled.</desc> 26117 </const> 26118 </enum> 26119 26120 <enum 26121 name="GuestDebugIoProvider" 26122 uuid="0cf00b1b-2ff7-414c-81c6-6cf410eaec4a" 26123 > 26124 <desc> 26125 The enabled guest debug I/O provider. This enumeration represents possible 26126 values for the <link to="IGuestDebugControl::debugIoProvider"/> attribute. 26127 </desc> 26128 <const name="None" value="0"> 26129 <desc>No connection available (only useful with 26130 <link to="GuestDebugProvider::None"/>). 26131 </desc> 26132 </const> 26133 <const name="TCP" value="1"> 26134 <desc>The remote stub is available through a TCP connection.</desc> 26135 </const> 26136 <const name="UDP" value="2"> 26137 <desc>The remote stub is available through a UDP connection.</desc> 26138 </const> 26139 <const name="IPC" value="3"> 26140 <desc>The remote stub is available through a IPC connection, 26141 namely a named pipe on Windows or a unix socket on other hosts.</desc> 26142 </const> 26143 </enum> 26144 26145 <interface 26146 name="IGuestDebugControl" extends="$unknown" 26147 uuid="1474bb3a-f096-4cd7-a857-8d8e3cea7331" 26148 wsmap="managed" 26149 rest="managed" 26150 reservedMethods="2" reservedAttributes="2" 26151 > 26152 <desc> 26153 Controls the guest debug settings of one virtual machine. 26154 </desc> 26155 26156 <attribute name="debugProvider" type="GuestDebugProvider"> 26157 <desc>The currently active debug provider.</desc> 26158 </attribute> 26159 26160 <attribute name="debugIoProvider" type="GuestDebugIoProvider"> 26161 <desc>The I/O backend for the selected debug provider.</desc> 26162 </attribute> 26163 26164 <attribute name="debugAddress" type="wstring"> 26165 <desc> 26166 The address to connect to or listen on, 26167 depending on the type. 26168 </desc> 26169 </attribute> 26170 26171 <attribute name="debugPort" type="unsigned long"> 26172 <desc> 26173 The port to listen on or connect to, depending on the selected I/O 26174 provider. Might be ignored by some providers. 26175 </desc> 26176 </attribute> 26177 </interface> 26178 26179 <!-- 26073 26180 // IVirtualBoxClient 26074 26181 ///////////////////////////////////////////////////////////////////////// … … 26134 26241 <enum 26135 26242 name="VBoxEventType" 26136 uuid=" 05dfb131-4deb-4125-9bcd-96518026b423"26243 uuid="e4c5252d-7d1a-4051-8cfb-5b2d7a73d992" 26137 26244 > 26138 26245 … … 26623 26730 </desc> 26624 26731 </const> 26732 <const name="OnGuestDebugControlChanged" value="117"> 26733 <desc> 26734 See <link to="IGuestDebugControlChangedEvent">IGuestDebugControlChangedEvent</link>. 26735 </desc> 26736 </const> 26625 26737 <!-- End event marker --> 26626 <const name="End" value="11 7">26738 <const name="End" value="118"> 26627 26739 <desc> 26628 26740 Must be last event, used for iterations and structures relying on numerical event values. … … 28958 29070 </attribute> 28959 29071 29072 </interface> 29073 29074 <interface 29075 name="IGuestDebugControlChangedEvent" extends="IEvent" 29076 uuid="a3d2799e-d3ad-4f73-91ef-7d839689f6d6" 29077 wsmap="managed" autogen="VBoxEvent" id="OnGuestDebugControlChanged" 29078 > 29079 <desc> 29080 Notification when a property of the <link to="IMachine::guestDebugControl">guest debug</link> 29081 settings changes. Interested callees should use IGuestDebugControl methods and attributes 29082 to find out what has changed. 29083 </desc> 29084 <attribute name="guestDebugControl" type="IGuestDebugControl" readonly="yes"> 29085 <desc> 29086 Guest debug control object that is subject to change. 29087 </desc> 29088 </attribute> 28960 29089 </interface> 28961 29090 -
trunk/src/VBox/Main/include/ConsoleImpl.h
r96407 r96888 228 228 HRESULT i_onStorageDeviceChange(IMediumAttachment *aMediumAttachment, BOOL aRemove, BOOL aSilent); 229 229 HRESULT i_onExtraDataChange(const Bstr &aMachineId, const Bstr &aKey, const Bstr &aVal); 230 HRESULT i_onGuestDebugControlChange(IGuestDebugControl *aGuestDebugControl); 230 231 231 232 HRESULT i_getGuestProperty(const Utf8Str &aName, Utf8Str *aValue, LONG64 *aTimestamp, Utf8Str *aFlags); -
trunk/src/VBox/Main/include/MachineImpl.h
r96407 r96888 52 52 #include "TrustedPlatformModuleImpl.h" 53 53 #include "NvramStoreImpl.h" 54 #include "GuestDebugControlImpl.h" 54 55 #ifdef VBOX_WITH_RESOURCE_USAGE_API 55 56 # include "Performance.h" … … 526 527 IsModified_TrustedPlatformModule = 0x008000, 527 528 IsModified_NvramStore = 0x010000, 529 IsModified_GuestDebugControl = 0x020000, 528 530 }; 529 531 … … 576 578 BOOL /* silent */) { return S_OK; } 577 579 virtual HRESULT i_onRecordingChange(BOOL /* aEnable */) { return S_OK; } 580 virtual HRESULT i_onGuestDebugControlChange(IGuestDebugControl * /* guestDebugControl */) { return S_OK; } 581 578 582 579 583 HRESULT i_saveRegistryEntry(settings::MachineRegistryEntry &data); … … 840 844 const ComObjPtr<GraphicsAdapter> mGraphicsAdapter; 841 845 const ComObjPtr<BandwidthControl> mBandwidthControl; 846 const ComObjPtr<GuestDebugControl> mGuestDebugControl; 842 847 843 848 const ComObjPtr<TrustedPlatformModule> mTrustedPlatformModule; … … 1035 1040 HRESULT getLogKeyId(com::Utf8Str &aKeyId); 1036 1041 HRESULT getLogKeyStore(com::Utf8Str &aKeyStore); 1042 HRESULT getGuestDebugControl(ComPtr<IGuestDebugControl> &aGuestDebugControl); 1037 1043 1038 1044 // wrapped IMachine methods … … 1433 1439 HRESULT i_onStorageDeviceChange(IMediumAttachment *aMediumAttachment, BOOL aRemove, BOOL aSilent); 1434 1440 HRESULT i_onCPUExecutionCapChange(ULONG aCpuExecutionCap); 1441 HRESULT i_onGuestDebugControlChange(IGuestDebugControl *guestDebugControl); 1435 1442 1436 1443 bool i_hasMatchingUSBFilter(const ComObjPtr<HostUSBDevice> &aDevice, ULONG *aMaskedIfs); -
trunk/src/VBox/Main/include/SessionImpl.h
r96407 r96888 123 123 HRESULT onUSBControllerChange(); 124 124 HRESULT onSharedFolderChange(BOOL aGlobal); 125 HRESULT onGuestDebugControlChange(const ComPtr<IGuestDebugControl> &aGuestDebugControl); 125 126 HRESULT onUSBDeviceAttach(const ComPtr<IUSBDevice> &aDevice, 126 127 const ComPtr<IVirtualBoxErrorInfo> &aError, -
trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
r96407 r96888 6049 6049 return rc; 6050 6050 } 6051 6052 /** 6053 * Called by IInternalSessionControl::OnGuestDebugControlChange(). 6054 */ 6055 HRESULT Console::i_onGuestDebugControlChange(IGuestDebugControl *aGuestDebugControl) 6056 { 6057 LogFlowThisFunc(("\n")); 6058 6059 AutoCaller autoCaller(this); 6060 AssertComRCReturnRC(autoCaller.rc()); 6061 6062 HRESULT hrc = S_OK; 6063 6064 /* don't trigger changes if the VM isn't running */ 6065 SafeVMPtrQuiet ptrVM(this); 6066 if (ptrVM.isOk()) 6067 { 6068 /// @todo 6069 } 6070 6071 if (SUCCEEDED(hrc)) 6072 ::FireGuestDebugControlChangedEvent(mEventSource, aGuestDebugControl); 6073 6074 LogFlowThisFunc(("Leaving rc=%#x\n", S_OK)); 6075 return hrc; 6076 } 6077 6051 6078 6052 6079 /** -
trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
r96854 r96888 3769 3769 strFile.append("dbgc-init"); 3770 3770 InsertConfigString(pDbgc, "GlobalInitScript", strFile); 3771 3772 /* 3773 * Configure guest debug settings. 3774 */ 3775 ComObjPtr<IGuestDebugControl> ptrGstDbgCtrl; 3776 GuestDebugProvider_T enmGstDbgProvider = GuestDebugProvider_None; 3777 3778 hrc = pMachine->COMGETTER(GuestDebugControl)(ptrGstDbgCtrl.asOutParam()); H(); 3779 hrc = ptrGstDbgCtrl->COMGETTER(DebugProvider)(&enmGstDbgProvider); H(); 3780 if (enmGstDbgProvider != GuestDebugProvider_None) 3781 { 3782 GuestDebugIoProvider_T enmGstDbgIoProvider = GuestDebugIoProvider_None; 3783 hrc = ptrGstDbgCtrl->COMGETTER(DebugIoProvider)(&enmGstDbgIoProvider); H(); 3784 hrc = ptrGstDbgCtrl->COMGETTER(DebugAddress)(bstr.asOutParam()); H(); 3785 Utf8Str strAddress = bstr; 3786 bstr.setNull(); 3787 3788 ULONG ulPort = 0; 3789 hrc = ptrGstDbgCtrl->COMGETTER(DebugPort)(&ulPort); H(); 3790 3791 PCFGMNODE pDbgSettings; 3792 InsertConfigNode(pDbgc, "Dbg", &pDbgSettings); 3793 InsertConfigString(pDbgSettings, "Address", strAddress); 3794 InsertConfigInteger(pDbgSettings, "Port", ulPort); 3795 3796 switch (enmGstDbgProvider) 3797 { 3798 case GuestDebugProvider_Native: 3799 InsertConfigString(pDbgSettings, "StubType", "Native"); 3800 break; 3801 case GuestDebugProvider_GDB: 3802 InsertConfigString(pDbgSettings, "StubType", "Gdb"); 3803 break; 3804 case GuestDebugProvider_KD: 3805 InsertConfigString(pDbgSettings, "StubType", "Kd"); 3806 break; 3807 default: 3808 AssertFailed(); 3809 break; 3810 } 3811 3812 switch (enmGstDbgIoProvider) 3813 { 3814 case GuestDebugIoProvider_TCP: 3815 InsertConfigString(pDbgSettings, "Provider", "tcp"); 3816 break; 3817 case GuestDebugIoProvider_UDP: 3818 InsertConfigString(pDbgSettings, "Provider", "udp"); 3819 break; 3820 case GuestDebugIoProvider_IPC: 3821 InsertConfigString(pDbgSettings, "Provider", "ipc"); 3822 break; 3823 default: 3824 AssertFailed(); 3825 break; 3826 } 3827 } 3771 3828 } 3772 3829 } -
trunk/src/VBox/Main/src-client/SessionImpl.cpp
r96407 r96888 874 874 } 875 875 876 HRESULT Session::onGuestDebugControlChange(const ComPtr<IGuestDebugControl> &aGuestDebugControl) 877 { 878 LogFlowThisFunc(("\n")); 879 880 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 881 AssertReturn(mState == SessionState_Locked, VBOX_E_INVALID_VM_STATE); 882 AssertReturn(mType == SessionType_WriteLock, VBOX_E_INVALID_OBJECT_STATE); 883 #ifndef VBOX_COM_INPROC_API_CLIENT 884 AssertReturn(mConsole, VBOX_E_INVALID_OBJECT_STATE); 885 886 return mConsole->i_onGuestDebugControlChange(aGuestDebugControl); 887 #else 888 RT_NOREF(aSerialPort); 889 return S_OK; 890 #endif 891 } 892 876 893 HRESULT Session::onUSBDeviceAttach(const ComPtr<IUSBDevice> &aDevice, 877 894 const ComPtr<IVirtualBoxErrorInfo> &aError, -
trunk/src/VBox/Main/src-server/MachineImpl.cpp
r96854 r96888 3267 3267 aKeyStore = com::Utf8Str::Empty; 3268 3268 #endif 3269 3270 return S_OK; 3271 } 3272 3273 HRESULT Machine::getGuestDebugControl(ComPtr<IGuestDebugControl> &aGuestDebugControl) 3274 { 3275 mGuestDebugControl.queryInterfaceTo(aGuestDebugControl.asOutParam()); 3269 3276 3270 3277 return S_OK; … … 8696 8703 mBandwidthControl->init(this); 8697 8704 8705 /* create the guest debug control object */ 8706 unconst(mGuestDebugControl).createObject(); 8707 mGuestDebugControl->init(this); 8708 8698 8709 return S_OK; 8699 8710 } … … 8718 8729 8719 8730 /* tell all our other child objects we've been uninitialized */ 8731 if (mGuestDebugControl) 8732 { 8733 mGuestDebugControl->uninit(); 8734 unconst(mGuestDebugControl).setNull(); 8735 } 8736 8720 8737 if (mBandwidthControl) 8721 8738 { … … 9573 9590 mHWData->mDebugging = *pDbg; 9574 9591 /* no more processing currently required, this will probably change. */ 9592 9593 HRESULT rc = mGuestDebugControl->i_loadSettings(*pDbg); 9594 if (FAILED(rc)) return rc; 9595 9575 9596 return S_OK; 9576 9597 } … … 10956 10977 #endif /* VBOX_WITH_GUEST_PROPS defined */ 10957 10978 10958 *pDbg = mHWData->mDebugging; 10979 rc = mGuestDebugControl->i_saveSettings(mHWData->mDebugging); 10980 if (FAILED(rc)) throw rc; 10981 10982 *pDbg = mHWData->mDebugging; /// @todo r=aeichner: Move this to guest debug control. */ 10959 10983 *pAutostart = mHWData->mAutostart; 10960 10984 … … 12364 12388 mBandwidthControl->i_rollback(); 12365 12389 12390 if (mGuestDebugControl && (mData->flModifications & IsModified_GuestDebugControl)) 12391 mGuestDebugControl->i_rollback(); 12392 12366 12393 if (!mHWData.isNull()) 12367 12394 mNetworkAdapters.resize(Global::getMaxNetworkAdapters(mHWData->mChipsetType)); … … 12434 12461 } 12435 12462 12463 if (flModifications & IsModified_GuestDebugControl) 12464 that->i_onGuestDebugControlChange(mGuestDebugControl); 12436 12465 12437 12466 #if 0 … … 12479 12508 mUSBDeviceFilters->i_commit(); 12480 12509 mBandwidthControl->i_commit(); 12510 mGuestDebugControl->i_commit(); 12481 12511 12482 12512 /* Since mNetworkAdapters is a list which might have been changed (resized) … … 12735 12765 mUSBDeviceFilters->i_copyFrom(aThat->mUSBDeviceFilters); 12736 12766 mBandwidthControl->i_copyFrom(aThat->mBandwidthControl); 12767 mGuestDebugControl->i_copyFrom(aThat->mGuestDebugControl); 12737 12768 12738 12769 /* create private copies of all controllers */ … … 13152 13183 mBandwidthControl->init(this, aMachine->mBandwidthControl); 13153 13184 13185 unconst(mGuestDebugControl).createObject(); 13186 mGuestDebugControl->init(this, aMachine->mGuestDebugControl); 13187 13154 13188 /* default is to delete saved state on Saved -> PoweredOff transition */ 13155 13189 mRemoveSavedState = true; … … 15001 15035 15002 15036 /** 15037 * @note Locks this object for reading. 15038 */ 15039 HRESULT SessionMachine::i_onGuestDebugControlChange(IGuestDebugControl *guestDebugControl) 15040 { 15041 LogFlowThisFunc(("\n")); 15042 15043 AutoCaller autoCaller(this); 15044 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 15045 15046 ComPtr<IInternalSessionControl> directControl; 15047 { 15048 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 15049 if (mData->mSession.mLockType == LockType_VM) 15050 directControl = mData->mSession.mDirectControl; 15051 } 15052 15053 /* ignore notifications sent after #OnSessionEnd() is called */ 15054 if (!directControl) 15055 return S_OK; 15056 15057 return directControl->OnGuestDebugControlChange(guestDebugControl); 15058 } 15059 15060 /** 15003 15061 * Returns @c true if this machine's USB controller reports it has a matching 15004 15062 * filter for the given USB device and @c false otherwise. -
trunk/src/VBox/Main/src-server/SnapshotImpl.cpp
r96407 r96888 1238 1238 unconst(mBandwidthControl).createObject(); 1239 1239 rc = mBandwidthControl->initCopy(this, pMachine->mBandwidthControl); 1240 if (FAILED(rc)) return rc; 1241 1242 unconst(mGuestDebugControl).createObject(); 1243 rc = mGuestDebugControl->initCopy(this, pMachine->mGuestDebugControl); 1240 1244 if (FAILED(rc)) return rc; 1241 1245 … … 1353 1357 unconst(mBandwidthControl).createObject(); 1354 1358 mBandwidthControl->init(this); 1359 1360 unconst(mGuestDebugControl).createObject(); 1361 mGuestDebugControl->init(this); 1355 1362 1356 1363 /* load hardware and storage settings */ -
trunk/src/VBox/Main/xml/Settings.cpp
r96407 r96888 4176 4176 fTracingEnabled(false), 4177 4177 fAllowTracingToAccessVM(false), 4178 strTracingConfig() 4178 strTracingConfig(), 4179 enmDbgProvider(GuestDebugProvider_None), 4180 enmIoProvider(GuestDebugIoProvider_None), 4181 strAddress(), 4182 ulPort(0) 4179 4183 { 4180 4184 } … … 4187 4191 return !fTracingEnabled 4188 4192 && !fAllowTracingToAccessVM 4189 && strTracingConfig.isEmpty(); 4193 && strTracingConfig.isEmpty() 4194 && enmDbgProvider == GuestDebugProvider_None 4195 && enmIoProvider == GuestDebugIoProvider_None 4196 && strAddress.isEmpty() 4197 && ulPort == 0; 4190 4198 } 4191 4199 … … 4200 4208 || ( fTracingEnabled == d.fTracingEnabled 4201 4209 && fAllowTracingToAccessVM == d.fAllowTracingToAccessVM 4202 && strTracingConfig == d.strTracingConfig); 4210 && strTracingConfig == d.strTracingConfig 4211 && enmDbgProvider == d.enmDbgProvider 4212 && enmIoProvider == d.enmIoProvider 4213 && strAddress == d.strAddress 4214 && ulPort == d.ulPort); 4203 4215 } 4204 4216 … … 6222 6234 pelmTracing->getAttributeValue("allowTracingToAccessVM", dbg.fAllowTracingToAccessVM); 6223 6235 pelmTracing->getAttributeValue("config", dbg.strTracingConfig); 6236 } 6237 6238 const xml::ElementNode *pelmGuestDebug = elmDebugging.findChildElement("GuestDebug"); 6239 if (pelmGuestDebug) 6240 { 6241 Utf8Str strTmp; 6242 pelmGuestDebug->getAttributeValue("provider", strTmp); 6243 if (strTmp == "None") 6244 dbg.enmDbgProvider = GuestDebugProvider_None; 6245 else if (strTmp == "GDB") 6246 dbg.enmDbgProvider = GuestDebugProvider_GDB; 6247 else if (strTmp == "KD") 6248 dbg.enmDbgProvider = GuestDebugProvider_KD; 6249 else 6250 throw ConfigFileError(this, pelmGuestDebug, N_("Invalid value '%s' for GuestDebug/@provider attribute"), strTmp.c_str()); 6251 6252 pelmGuestDebug->getAttributeValue("io", strTmp); 6253 if (strTmp == "None") 6254 dbg.enmIoProvider = GuestDebugIoProvider_None; 6255 else if (strTmp == "TCP") 6256 dbg.enmIoProvider = GuestDebugIoProvider_TCP; 6257 else if (strTmp == "UDP") 6258 dbg.enmIoProvider = GuestDebugIoProvider_UDP; 6259 else if (strTmp == "IPC") 6260 dbg.enmIoProvider = GuestDebugIoProvider_IPC; 6261 else 6262 throw ConfigFileError(this, pelmGuestDebug, N_("Invalid value '%s' for GuestDebug/@io attribute"), strTmp.c_str()); 6263 6264 pelmGuestDebug->getAttributeValue("address", dbg.strAddress); 6265 pelmGuestDebug->getAttributeValue("port", dbg.ulPort); 6224 6266 } 6225 6267 } … … 8283 8325 pElmTracing->setAttribute("allowTracingToAccessVM", dbg.fAllowTracingToAccessVM); 8284 8326 pElmTracing->setAttribute("config", dbg.strTracingConfig); 8327 8328 xml::ElementNode *pElmGuestDebug = pElmDebugging->createChild("GuestDebug"); 8329 const char *pcszDebugProvider = NULL; 8330 const char *pcszIoProvider = NULL; 8331 8332 switch (dbg.enmDbgProvider) 8333 { 8334 case GuestDebugProvider_None: pcszDebugProvider = "None"; break; 8335 case GuestDebugProvider_GDB: pcszDebugProvider = "GDB"; break; 8336 case GuestDebugProvider_KD: pcszDebugProvider = "KD"; break; 8337 default: AssertFailed(); pcszDebugProvider = "None"; break; 8338 } 8339 8340 switch (dbg.enmIoProvider) 8341 { 8342 case GuestDebugIoProvider_None: pcszIoProvider = "None"; break; 8343 case GuestDebugIoProvider_TCP: pcszIoProvider = "TCP"; break; 8344 case GuestDebugIoProvider_UDP: pcszIoProvider = "UDP"; break; 8345 case GuestDebugIoProvider_IPC: pcszIoProvider = "IPC"; break; 8346 default: AssertFailed(); pcszIoProvider = "None"; break; 8347 } 8348 8349 pElmGuestDebug->setAttribute("provider", pcszDebugProvider); 8350 pElmGuestDebug->setAttribute("io", pcszIoProvider); 8351 pElmGuestDebug->setAttribute("address", dbg.strAddress); 8352 pElmGuestDebug->setAttribute("port", dbg.ulPort); 8285 8353 } 8286 8354 … … 8962 9030 #endif /* VBOX_WITH_VMNET */ 8963 9031 } 9032 9033 // VirtualBox 7.0 adds guest debug settings. 9034 if ( debugging.enmDbgProvider != GuestDebugProvider_None 9035 || debugging.enmIoProvider != GuestDebugIoProvider_None 9036 || debugging.strAddress.isNotEmpty() 9037 || debugging.ulPort != 0) 9038 { 9039 m->sv = SettingsVersion_v1_19; 9040 return; 9041 } 8964 9042 } 8965 9043
Note:
See TracChangeset
for help on using the changeset viewer.