Thanks for the clarification! Eran
On Sat, Apr 12, 2014 at 2:00 AM, Greg Clayton <[email protected]> wrote: > Clear just releases the shared pointer to the target that you have. So in > your IDE, when you are done with a target, you can call clear to ensure > that your IDE isn't the only thing holding onto the target and keeping it > and all shared libraries in memory: > > void > SBTarget::Clear () > { > m_opaque_sp.reset(); > } > > Delete target will call "Target::Destroy()" which will kill the process if > it is still around, and also clear the target's image list, then it will > remove any shared libraries from the global shared library cache in LLDB > that were only referenced by the target you were destroying: > > bool > SBDebugger::DeleteTarget (lldb::SBTarget &target) > { > bool result = false; > if (m_opaque_sp) > { > TargetSP target_sp(target.GetSP()); > if (target_sp) > { > // No need to lock, the target list is thread safe > result = m_opaque_sp->GetTargetList().DeleteTarget (target_sp); > target_sp->Destroy(); > target.Clear(); > const bool mandatory = true; > ModuleList::RemoveOrphanSharedModules(mandatory); > } > } > ... > > > > So this is a great way for an IDE, which might have one or more debug > windows open, to reclaim the memory that was solely associated with a given > target. > > LLDB permanently caches the shared libraries that it loads in a global > cache so the next time you debug, we have all those shared libraries > instantly loaded and ready for you to use. This can greatly increase your > restart performance, so don't call SBDebugger::DeleteTarget() if you are > going to immediately debug again using the same target. Try and keep the > existing target around for all of your runs of that process so the module > cache works in your favor. > > > On Apr 11, 2014, at 3:22 PM, Eran Ifrah <[email protected]> wrote: > > > Sorry, meant the difference between: > > > > target.Clear() and debugger.DeleteTarget( &target ); > > > > Thanks > > > > > > On Sat, Apr 12, 2014 at 1:20 AM, Eran Ifrah <[email protected]> > wrote: > > Hello, > > > > I could not find it in the docs, so I am asking here: > > > > Assuming that I have an instance of type SBTarget: > > > > SBTraget target; > > > > Whats the difference between calling: > > > > target.Clear() > > > > and > > > > lldb::SBDebugger::Destroy( &target ) ? > > > > Thanks, > > > > -- > > Eran Ifrah > > Author of codelite, a cross platform open source C/C++ IDE: > http://www.codelite.org > > wxCrafter, a wxWidgets RAD: http://wxcrafter.codelite.org > > > > > > > > -- > > Eran Ifrah > > Author of codelite, a cross platform open source C/C++ IDE: > http://www.codelite.org > > wxCrafter, a wxWidgets RAD: http://wxcrafter.codelite.org > > _______________________________________________ > > lldb-dev mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev > > -- Eran Ifrah Author of codelite, a cross platform open source C/C++ IDE: http://www.codelite.org wxCrafter, a wxWidgets RAD: http://wxcrafter.codelite.org
_______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
