2 * Copyright 2009-2012, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Copyright 2013-2015, Rene Gollent, rene@gollent.com.
4 * Distributed under the terms of the MIT License.
12 #include <AutoLocker.h>
14 #include "Breakpoint.h"
15 #include "DisassembledCode.h"
16 #include "FileSourceCode.h"
18 #include "ImageDebugInfo.h"
19 #include "SignalDispositionTypes.h"
20 #include "SourceCode.h"
21 #include "SpecificImageDebugInfo.h"
22 #include "Statement.h"
23 #include "TeamDebugInfo.h"
26 #include "Watchpoint.h"
29 // #pragma mark - BreakpointByAddressPredicate
32 struct Team::BreakpointByAddressPredicate
33 : UnaryPredicate
<Breakpoint
> {
34 BreakpointByAddressPredicate(target_addr_t address
)
40 virtual int operator()(const Breakpoint
* breakpoint
) const
42 return -Breakpoint::CompareAddressBreakpoint(&fAddress
, breakpoint
);
46 target_addr_t fAddress
;
50 // #pragma mark - WatchpointByAddressPredicate
53 struct Team::WatchpointByAddressPredicate
54 : UnaryPredicate
<Watchpoint
> {
55 WatchpointByAddressPredicate(target_addr_t address
)
61 virtual int operator()(const Watchpoint
* watchpoint
) const
63 return -Watchpoint::CompareAddressWatchpoint(&fAddress
, watchpoint
);
67 target_addr_t fAddress
;
71 // #pragma mark - Team
74 Team::Team(team_id teamID
, TeamMemory
* teamMemory
, Architecture
* architecture
,
75 TeamDebugInfo
* debugInfo
, TeamTypeInformation
* typeInformation
)
79 fTeamMemory(teamMemory
),
80 fTypeInformation(typeInformation
),
81 fArchitecture(architecture
),
82 fDebugInfo(debugInfo
),
83 fStopOnImageLoad(false),
84 fStopImageNameListEnabled(false),
85 fDefaultSignalDisposition(SIGNAL_DISPOSITION_IGNORE
)
87 fDebugInfo
->AcquireReference();
93 while (UserBreakpoint
* userBreakpoint
= fUserBreakpoints
.RemoveHead())
94 userBreakpoint
->ReleaseReference();
96 for (int32 i
= 0; Breakpoint
* breakpoint
= fBreakpoints
.ItemAt(i
); i
++)
97 breakpoint
->ReleaseReference();
99 for (int32 i
= 0; Watchpoint
* watchpoint
= fWatchpoints
.ItemAt(i
); i
++)
100 watchpoint
->ReleaseReference();
102 while (Image
* image
= fImages
.RemoveHead())
103 image
->ReleaseReference();
105 while (Thread
* thread
= fThreads
.RemoveHead())
106 thread
->ReleaseReference();
108 fDebugInfo
->ReleaseReference();
115 return fLock
.InitCheck();
120 Team::SetName(const BString
& name
)
123 _NotifyTeamRenamed();
128 Team::AddThread(Thread
* thread
)
130 fThreads
.Add(thread
);
131 _NotifyThreadAdded(thread
);
137 Team::AddThread(const ThreadInfo
& threadInfo
, Thread
** _thread
)
139 Thread
* thread
= new(std::nothrow
) Thread(this, threadInfo
.ThreadID());
143 status_t error
= thread
->Init();
149 thread
->SetName(threadInfo
.Name());
160 Team::RemoveThread(Thread
* thread
)
162 fThreads
.Remove(thread
);
163 _NotifyThreadRemoved(thread
);
168 Team::RemoveThread(thread_id threadID
)
170 Thread
* thread
= ThreadByID(threadID
);
174 RemoveThread(thread
);
175 thread
->ReleaseReference();
181 Team::ThreadByID(thread_id threadID
) const
183 for (ThreadList::ConstIterator it
= fThreads
.GetIterator();
184 Thread
* thread
= it
.Next();) {
185 if (thread
->ID() == threadID
)
194 Team::Threads() const
201 Team::AddImage(const ImageInfo
& imageInfo
, LocatableFile
* imageFile
,
204 Image
* image
= new(std::nothrow
) Image(this, imageInfo
, imageFile
);
208 status_t error
= image
->Init();
214 if (image
->Type() == B_APP_IMAGE
)
215 SetName(image
->Name());
218 _NotifyImageAdded(image
);
228 Team::RemoveImage(Image
* image
)
230 fImages
.Remove(image
);
231 _NotifyImageRemoved(image
);
236 Team::RemoveImage(image_id imageID
)
238 Image
* image
= ImageByID(imageID
);
243 image
->ReleaseReference();
249 Team::ImageByID(image_id imageID
) const
251 for (ImageList::ConstIterator it
= fImages
.GetIterator();
252 Image
* image
= it
.Next();) {
253 if (image
->ID() == imageID
)
262 Team::ImageByAddress(target_addr_t address
) const
264 for (ImageList::ConstIterator it
= fImages
.GetIterator();
265 Image
* image
= it
.Next();) {
266 if (image
->ContainsAddress(address
))
284 while (!fImages
.IsEmpty())
285 RemoveImage(fImages
.First());
290 Team::AddStopImageName(const BString
& name
)
292 if (!fStopImageNames
.Add(name
))
295 fStopImageNames
.Sort();
297 NotifyStopImageNameAdded(name
);
303 Team::RemoveStopImageName(const BString
& name
)
305 fStopImageNames
.Remove(name
);
306 NotifyStopImageNameRemoved(name
);
311 Team::SetStopOnImageLoad(bool enabled
, bool useImageNameList
)
313 fStopOnImageLoad
= enabled
;
314 fStopImageNameListEnabled
= useImageNameList
;
315 NotifyStopOnImageLoadChanged(enabled
, useImageNameList
);
320 Team::StopImageNames() const
322 return fStopImageNames
;
327 Team::SetDefaultSignalDisposition(int32 disposition
)
329 if (disposition
!= fDefaultSignalDisposition
) {
330 fDefaultSignalDisposition
= disposition
;
331 NotifyDefaultSignalDispositionChanged(disposition
);
337 Team::SetCustomSignalDisposition(int32 signal
, int32 disposition
)
339 SignalDispositionMappings::iterator it
= fCustomSignalDispositions
.find(
341 if (it
!= fCustomSignalDispositions
.end() && it
->second
== disposition
)
345 fCustomSignalDispositions
[signal
] = disposition
;
350 NotifyCustomSignalDispositionChanged(signal
, disposition
);
357 Team::RemoveCustomSignalDisposition(int32 signal
)
359 SignalDispositionMappings::iterator it
= fCustomSignalDispositions
.find(
361 if (it
== fCustomSignalDispositions
.end())
364 fCustomSignalDispositions
.erase(it
);
366 NotifyCustomSignalDispositionRemoved(signal
);
371 Team::SignalDispositionFor(int32 signal
) const
373 SignalDispositionMappings::const_iterator it
374 = fCustomSignalDispositions
.find(signal
);
375 if (it
!= fCustomSignalDispositions
.end())
378 return fDefaultSignalDisposition
;
382 const SignalDispositionMappings
&
383 Team::GetSignalDispositionMappings() const
385 return fCustomSignalDispositions
;
390 Team::ClearSignalDispositionMappings()
392 fCustomSignalDispositions
.clear();
397 Team::AddBreakpoint(Breakpoint
* breakpoint
)
399 if (fBreakpoints
.BinaryInsert(breakpoint
, &Breakpoint::CompareBreakpoints
))
402 breakpoint
->ReleaseReference();
408 Team::RemoveBreakpoint(Breakpoint
* breakpoint
)
410 int32 index
= fBreakpoints
.BinarySearchIndex(*breakpoint
,
411 &Breakpoint::CompareBreakpoints
);
415 fBreakpoints
.RemoveItemAt(index
);
416 breakpoint
->ReleaseReference();
421 Team::CountBreakpoints() const
423 return fBreakpoints
.CountItems();
428 Team::BreakpointAt(int32 index
) const
430 return fBreakpoints
.ItemAt(index
);
435 Team::BreakpointAtAddress(target_addr_t address
) const
437 return fBreakpoints
.BinarySearchByKey(address
,
438 &Breakpoint::CompareAddressBreakpoint
);
443 Team::GetBreakpointsInAddressRange(TargetAddressRange range
,
444 BObjectList
<UserBreakpoint
>& breakpoints
) const
446 int32 index
= fBreakpoints
.FindBinaryInsertionIndex(
447 BreakpointByAddressPredicate(range
.Start()));
448 for (; Breakpoint
* breakpoint
= fBreakpoints
.ItemAt(index
); index
++) {
449 if (breakpoint
->Address() > range
.End())
452 for (UserBreakpointInstanceList::ConstIterator it
453 = breakpoint
->UserBreakpoints().GetIterator();
454 UserBreakpointInstance
* instance
= it
.Next();) {
455 breakpoints
.AddItem(instance
->GetUserBreakpoint());
459 // TODO: Avoid duplicates!
464 Team::GetBreakpointsForSourceCode(SourceCode
* sourceCode
,
465 BObjectList
<UserBreakpoint
>& breakpoints
) const
467 if (DisassembledCode
* disassembledCode
468 = dynamic_cast<DisassembledCode
*>(sourceCode
)) {
469 GetBreakpointsInAddressRange(disassembledCode
->StatementAddressRange(),
474 LocatableFile
* sourceFile
= sourceCode
->GetSourceFile();
475 if (sourceFile
== NULL
)
478 // TODO: This can probably be optimized. Maybe by registering the user
479 // breakpoints with the team and sorting them by source code.
480 for (int32 i
= 0; Breakpoint
* breakpoint
= fBreakpoints
.ItemAt(i
); i
++) {
481 UserBreakpointInstance
* userBreakpointInstance
482 = breakpoint
->FirstUserBreakpoint();
483 if (userBreakpointInstance
== NULL
)
486 UserBreakpoint
* userBreakpoint
487 = userBreakpointInstance
->GetUserBreakpoint();
488 if (userBreakpoint
->Location().SourceFile() == sourceFile
)
489 breakpoints
.AddItem(userBreakpoint
);
495 Team::AddUserBreakpoint(UserBreakpoint
* userBreakpoint
)
497 fUserBreakpoints
.Add(userBreakpoint
);
498 userBreakpoint
->AcquireReference();
503 Team::RemoveUserBreakpoint(UserBreakpoint
* userBreakpoint
)
505 fUserBreakpoints
.Remove(userBreakpoint
);
506 userBreakpoint
->ReleaseReference();
511 Team::AddWatchpoint(Watchpoint
* watchpoint
)
513 if (fWatchpoints
.BinaryInsert(watchpoint
, &Watchpoint::CompareWatchpoints
))
516 watchpoint
->ReleaseReference();
522 Team::RemoveWatchpoint(Watchpoint
* watchpoint
)
524 int32 index
= fWatchpoints
.BinarySearchIndex(*watchpoint
,
525 &Watchpoint::CompareWatchpoints
);
529 fWatchpoints
.RemoveItemAt(index
);
530 watchpoint
->ReleaseReference();
535 Team::CountWatchpoints() const
537 return fWatchpoints
.CountItems();
542 Team::WatchpointAt(int32 index
) const
544 return fWatchpoints
.ItemAt(index
);
549 Team::WatchpointAtAddress(target_addr_t address
) const
551 return fWatchpoints
.BinarySearchByKey(address
,
552 &Watchpoint::CompareAddressWatchpoint
);
557 Team::GetWatchpointsInAddressRange(TargetAddressRange range
,
558 BObjectList
<Watchpoint
>& watchpoints
) const
560 int32 index
= fWatchpoints
.FindBinaryInsertionIndex(
561 WatchpointByAddressPredicate(range
.Start()));
562 for (; Watchpoint
* watchpoint
= fWatchpoints
.ItemAt(index
); index
++) {
563 if (watchpoint
->Address() > range
.End())
566 watchpoints
.AddItem(watchpoint
);
572 Team::GetStatementAtAddress(target_addr_t address
, FunctionInstance
*& _function
,
573 Statement
*& _statement
)
575 TRACE_CODE("Team::GetStatementAtAddress(%#" B_PRIx64
")\n", address
);
577 // get the image at the address
578 Image
* image
= ImageByAddress(address
);
580 TRACE_CODE(" -> no image\n");
581 return B_ENTRY_NOT_FOUND
;
584 ImageDebugInfo
* imageDebugInfo
= image
->GetImageDebugInfo();
585 if (imageDebugInfo
== NULL
) {
586 TRACE_CODE(" -> no image debug info\n");
587 return B_ENTRY_NOT_FOUND
;
591 FunctionInstance
* functionInstance
592 = imageDebugInfo
->FunctionAtAddress(address
);
593 if (functionInstance
== NULL
) {
594 TRACE_CODE(" -> no function instance\n");
595 return B_ENTRY_NOT_FOUND
;
598 // If the function instance has disassembled code attached, we can get the
599 // statement directly.
600 if (DisassembledCode
* code
= functionInstance
->GetSourceCode()) {
601 Statement
* statement
= code
->StatementAtAddress(address
);
602 if (statement
== NULL
)
603 return B_ENTRY_NOT_FOUND
;
605 statement
->AcquireReference();
606 _statement
= statement
;
607 _function
= functionInstance
;
611 // get the statement from the image debug info
612 FunctionDebugInfo
* functionDebugInfo
613 = functionInstance
->GetFunctionDebugInfo();
614 status_t error
= functionDebugInfo
->GetSpecificImageDebugInfo()
615 ->GetStatement(functionDebugInfo
, address
, _statement
);
617 TRACE_CODE(" -> no statement from the specific image debug info\n");
621 _function
= functionInstance
;
627 Team::GetStatementAtSourceLocation(SourceCode
* sourceCode
,
628 const SourceLocation
& location
, Statement
*& _statement
)
630 TRACE_CODE("Team::GetStatementAtSourceLocation(%p, (%" B_PRId32
", %"
631 B_PRId32
"))\n", sourceCode
, location
.Line(), location
.Column());
633 // If we're lucky the source code can provide us with a statement.
634 if (DisassembledCode
* code
= dynamic_cast<DisassembledCode
*>(sourceCode
)) {
635 Statement
* statement
= code
->StatementAtLocation(location
);
636 if (statement
== NULL
)
637 return B_ENTRY_NOT_FOUND
;
639 statement
->AcquireReference();
640 _statement
= statement
;
644 // Go the long and stony way over the source file and the team debug info.
645 // get the source file for the source code
646 LocatableFile
* sourceFile
= sourceCode
->GetSourceFile();
647 if (sourceFile
== NULL
)
648 return B_ENTRY_NOT_FOUND
;
650 // get the function at the source location
651 Function
* function
= fDebugInfo
->FunctionAtSourceLocation(sourceFile
,
653 if (function
== NULL
)
654 return B_ENTRY_NOT_FOUND
;
656 // Get some function instance and ask its image debug info to provide us
658 FunctionInstance
* functionInstance
= function
->FirstInstance();
659 if (functionInstance
== NULL
)
660 return B_ENTRY_NOT_FOUND
;
662 FunctionDebugInfo
* functionDebugInfo
663 = functionInstance
->GetFunctionDebugInfo();
664 return functionDebugInfo
->GetSpecificImageDebugInfo()
665 ->GetStatementAtSourceLocation(functionDebugInfo
, location
, _statement
);
670 Team::FunctionByID(FunctionID
* functionID
) const
672 return fDebugInfo
->FunctionByID(functionID
);
677 Team::AddListener(Listener
* listener
)
679 AutoLocker
<Team
> locker(this);
680 fListeners
.Add(listener
);
685 Team::RemoveListener(Listener
* listener
)
687 AutoLocker
<Team
> locker(this);
688 fListeners
.Remove(listener
);
693 Team::NotifyThreadStateChanged(Thread
* thread
)
695 for (ListenerList::Iterator it
= fListeners
.GetIterator();
696 Listener
* listener
= it
.Next();) {
697 listener
->ThreadStateChanged(
698 ThreadEvent(TEAM_EVENT_THREAD_STATE_CHANGED
, thread
));
704 Team::NotifyThreadCpuStateChanged(Thread
* thread
)
706 for (ListenerList::Iterator it
= fListeners
.GetIterator();
707 Listener
* listener
= it
.Next();) {
708 listener
->ThreadCpuStateChanged(
709 ThreadEvent(TEAM_EVENT_THREAD_CPU_STATE_CHANGED
, thread
));
715 Team::NotifyThreadStackTraceChanged(Thread
* thread
)
717 for (ListenerList::Iterator it
= fListeners
.GetIterator();
718 Listener
* listener
= it
.Next();) {
719 listener
->ThreadStackTraceChanged(
720 ThreadEvent(TEAM_EVENT_THREAD_STACK_TRACE_CHANGED
, thread
));
726 Team::NotifyImageDebugInfoChanged(Image
* image
)
728 for (ListenerList::Iterator it
= fListeners
.GetIterator();
729 Listener
* listener
= it
.Next();) {
730 listener
->ImageDebugInfoChanged(
731 ImageEvent(TEAM_EVENT_IMAGE_DEBUG_INFO_CHANGED
, image
));
737 Team::NotifyStopOnImageLoadChanged(bool enabled
, bool useImageNameList
)
739 for (ListenerList::Iterator it
= fListeners
.GetIterator();
740 Listener
* listener
= it
.Next();) {
741 listener
->StopOnImageLoadSettingsChanged(
742 ImageLoadEvent(TEAM_EVENT_IMAGE_LOAD_SETTINGS_CHANGED
, this,
743 enabled
, useImageNameList
));
749 Team::NotifyStopImageNameAdded(const BString
& name
)
751 for (ListenerList::Iterator it
= fListeners
.GetIterator();
752 Listener
* listener
= it
.Next();) {
753 listener
->StopOnImageLoadNameAdded(
754 ImageLoadNameEvent(TEAM_EVENT_IMAGE_LOAD_NAME_ADDED
, this, name
));
760 Team::NotifyStopImageNameRemoved(const BString
& name
)
762 for (ListenerList::Iterator it
= fListeners
.GetIterator();
763 Listener
* listener
= it
.Next();) {
764 listener
->StopOnImageLoadNameRemoved(
765 ImageLoadNameEvent(TEAM_EVENT_IMAGE_LOAD_NAME_REMOVED
, this,
772 Team::NotifyDefaultSignalDispositionChanged(int32 disposition
)
774 for (ListenerList::Iterator it
= fListeners
.GetIterator();
775 Listener
* listener
= it
.Next();) {
776 listener
->DefaultSignalDispositionChanged(
777 DefaultSignalDispositionEvent(
778 TEAM_EVENT_DEFAULT_SIGNAL_DISPOSITION_CHANGED
, this,
785 Team::NotifyCustomSignalDispositionChanged(int32 signal
, int32 disposition
)
787 for (ListenerList::Iterator it
= fListeners
.GetIterator();
788 Listener
* listener
= it
.Next();) {
789 listener
->CustomSignalDispositionChanged(
790 CustomSignalDispositionEvent(
791 TEAM_EVENT_CUSTOM_SIGNAL_DISPOSITION_CHANGED
, this,
792 signal
, disposition
));
798 Team::NotifyCustomSignalDispositionRemoved(int32 signal
)
800 for (ListenerList::Iterator it
= fListeners
.GetIterator();
801 Listener
* listener
= it
.Next();) {
802 listener
->CustomSignalDispositionRemoved(
803 CustomSignalDispositionEvent(
804 TEAM_EVENT_CUSTOM_SIGNAL_DISPOSITION_REMOVED
, this,
805 signal
, SIGNAL_DISPOSITION_IGNORE
));
811 Team::NotifyConsoleOutputReceived(int32 fd
, const BString
& output
)
813 for (ListenerList::Iterator it
= fListeners
.GetIterator();
814 Listener
* listener
= it
.Next();) {
815 listener
->ConsoleOutputReceived(
816 ConsoleOutputEvent(TEAM_EVENT_CONSOLE_OUTPUT_RECEIVED
, this,
823 Team::NotifyUserBreakpointChanged(UserBreakpoint
* breakpoint
)
825 for (ListenerList::Iterator it
= fListeners
.GetIterator();
826 Listener
* listener
= it
.Next();) {
827 listener
->UserBreakpointChanged(UserBreakpointEvent(
828 TEAM_EVENT_USER_BREAKPOINT_CHANGED
, this, breakpoint
));
834 Team::NotifyWatchpointChanged(Watchpoint
* watchpoint
)
836 for (ListenerList::Iterator it
= fListeners
.GetIterator();
837 Listener
* listener
= it
.Next();) {
838 listener
->WatchpointChanged(WatchpointEvent(
839 TEAM_EVENT_WATCHPOINT_CHANGED
, this, watchpoint
));
845 Team::NotifyDebugReportChanged(const char* reportPath
, status_t result
)
847 for (ListenerList::Iterator it
= fListeners
.GetIterator();
848 Listener
* listener
= it
.Next();) {
849 listener
->DebugReportChanged(DebugReportEvent(
850 TEAM_EVENT_DEBUG_REPORT_CHANGED
, this, reportPath
, result
));
856 Team::NotifyCoreFileChanged(const char* targetPath
)
858 for (ListenerList::Iterator it
= fListeners
.GetIterator();
859 Listener
* listener
= it
.Next();) {
860 listener
->CoreFileChanged(CoreFileChangedEvent(
861 TEAM_EVENT_CORE_FILE_CHANGED
, this, targetPath
));
867 Team::NotifyMemoryChanged(target_addr_t address
, target_size_t size
)
869 for (ListenerList::Iterator it
= fListeners
.GetIterator();
870 Listener
* listener
= it
.Next();) {
871 listener
->MemoryChanged(MemoryChangedEvent(
872 TEAM_EVENT_MEMORY_CHANGED
, this, address
, size
));
878 Team::_NotifyTeamRenamed()
880 for (ListenerList::Iterator it
= fListeners
.GetIterator();
881 Listener
* listener
= it
.Next();) {
882 listener
->TeamRenamed(Event(TEAM_EVENT_TEAM_RENAMED
, this));
888 Team::_NotifyThreadAdded(Thread
* thread
)
890 for (ListenerList::Iterator it
= fListeners
.GetIterator();
891 Listener
* listener
= it
.Next();) {
892 listener
->ThreadAdded(ThreadEvent(TEAM_EVENT_THREAD_ADDED
, thread
));
898 Team::_NotifyThreadRemoved(Thread
* thread
)
900 for (ListenerList::Iterator it
= fListeners
.GetIterator();
901 Listener
* listener
= it
.Next();) {
902 listener
->ThreadRemoved(ThreadEvent(TEAM_EVENT_THREAD_REMOVED
, thread
));
908 Team::_NotifyImageAdded(Image
* image
)
910 for (ListenerList::Iterator it
= fListeners
.GetIterator();
911 Listener
* listener
= it
.Next();) {
912 listener
->ImageAdded(ImageEvent(TEAM_EVENT_IMAGE_ADDED
, image
));
918 Team::_NotifyImageRemoved(Image
* image
)
920 for (ListenerList::Iterator it
= fListeners
.GetIterator();
921 Listener
* listener
= it
.Next();) {
922 listener
->ImageRemoved(ImageEvent(TEAM_EVENT_IMAGE_REMOVED
, image
));
927 // #pragma mark - Event
930 Team::Event::Event(uint32 type
, Team
* team
)
938 // #pragma mark - ThreadEvent
941 Team::ThreadEvent::ThreadEvent(uint32 type
, Thread
* thread
)
943 Event(type
, thread
->GetTeam()),
949 // #pragma mark - ImageEvent
952 Team::ImageEvent::ImageEvent(uint32 type
, Image
* image
)
954 Event(type
, image
->GetTeam()),
960 // #pragma mark - ImageLoadEvent
963 Team::ImageLoadEvent::ImageLoadEvent(uint32 type
, Team
* team
,
964 bool stopOnImageLoad
, bool stopImageNameListEnabled
)
967 fStopOnImageLoad(stopOnImageLoad
),
968 fStopImageNameListEnabled(stopImageNameListEnabled
)
973 // #pragma mark - ImageLoadNameEvent
976 Team::ImageLoadNameEvent::ImageLoadNameEvent(uint32 type
, Team
* team
,
985 // #pragma mark - DefaultSignalDispositionEvent
988 Team::DefaultSignalDispositionEvent::DefaultSignalDispositionEvent(uint32 type
,
989 Team
* team
, int32 disposition
)
992 fDefaultDisposition(disposition
)
997 // #pragma mark - CustomSignalDispositionEvent
1000 Team::CustomSignalDispositionEvent::CustomSignalDispositionEvent(uint32 type
,
1001 Team
* team
, int32 signal
, int32 disposition
)
1005 fDisposition(disposition
)
1010 // #pragma mark - BreakpointEvent
1013 Team::BreakpointEvent::BreakpointEvent(uint32 type
, Team
* team
,
1014 Breakpoint
* breakpoint
)
1017 fBreakpoint(breakpoint
)
1022 // #pragma mark - ConsoleOutputEvent
1025 Team::ConsoleOutputEvent::ConsoleOutputEvent(uint32 type
, Team
* team
,
1026 int32 fd
, const BString
& output
)
1035 // #pragma mark - DebugReportEvent
1038 Team::DebugReportEvent::DebugReportEvent(uint32 type
, Team
* team
,
1039 const char* reportPath
, status_t finalStatus
)
1042 fReportPath(reportPath
),
1043 fFinalStatus(finalStatus
)
1048 // #pragma mark - CoreFileChangedEvent
1051 Team::CoreFileChangedEvent::CoreFileChangedEvent(uint32 type
, Team
* team
,
1052 const char* targetPath
)
1055 fTargetPath(targetPath
)
1060 // #pragma mark - MemoryChangedEvent
1063 Team::MemoryChangedEvent::MemoryChangedEvent(uint32 type
, Team
* team
,
1064 target_addr_t address
, target_size_t size
)
1067 fTargetAddress(address
),
1073 // #pragma mark - WatchpointEvent
1076 Team::WatchpointEvent::WatchpointEvent(uint32 type
, Team
* team
,
1077 Watchpoint
* watchpoint
)
1080 fWatchpoint(watchpoint
)
1085 // #pragma mark - UserBreakpointEvent
1088 Team::UserBreakpointEvent::UserBreakpointEvent(uint32 type
, Team
* team
,
1089 UserBreakpoint
* breakpoint
)
1092 fBreakpoint(breakpoint
)
1097 // #pragma mark - Listener
1100 Team::Listener::~Listener()
1106 Team::Listener::TeamRenamed(const Team::Event
& event
)
1112 Team::Listener::ThreadAdded(const Team::ThreadEvent
& event
)
1118 Team::Listener::ThreadRemoved(const Team::ThreadEvent
& event
)
1124 Team::Listener::ImageAdded(const Team::ImageEvent
& event
)
1130 Team::Listener::ImageRemoved(const Team::ImageEvent
& event
)
1136 Team::Listener::ThreadStateChanged(const Team::ThreadEvent
& event
)
1142 Team::Listener::ThreadCpuStateChanged(const Team::ThreadEvent
& event
)
1148 Team::Listener::ThreadStackTraceChanged(const Team::ThreadEvent
& event
)
1154 Team::Listener::ImageDebugInfoChanged(const Team::ImageEvent
& event
)
1160 Team::Listener::StopOnImageLoadSettingsChanged(
1161 const Team::ImageLoadEvent
& event
)
1167 Team::Listener::StopOnImageLoadNameAdded(const Team::ImageLoadNameEvent
& event
)
1173 Team::Listener::StopOnImageLoadNameRemoved(
1174 const Team::ImageLoadNameEvent
& event
)
1180 Team::Listener::DefaultSignalDispositionChanged(
1181 const Team::DefaultSignalDispositionEvent
& event
)
1187 Team::Listener::CustomSignalDispositionChanged(
1188 const Team::CustomSignalDispositionEvent
& event
)
1194 Team::Listener::CustomSignalDispositionRemoved(
1195 const Team::CustomSignalDispositionEvent
& event
)
1201 Team::Listener::ConsoleOutputReceived(const Team::ConsoleOutputEvent
& event
)
1207 Team::Listener::BreakpointAdded(const Team::BreakpointEvent
& event
)
1213 Team::Listener::BreakpointRemoved(const Team::BreakpointEvent
& event
)
1219 Team::Listener::UserBreakpointChanged(const Team::UserBreakpointEvent
& event
)
1225 Team::Listener::WatchpointAdded(const Team::WatchpointEvent
& event
)
1231 Team::Listener::WatchpointRemoved(const Team::WatchpointEvent
& event
)
1237 Team::Listener::WatchpointChanged(const Team::WatchpointEvent
& event
)
1243 Team::Listener::DebugReportChanged(const Team::DebugReportEvent
& event
)
1249 Team::Listener::CoreFileChanged(const Team::CoreFileChangedEvent
& event
)
1255 Team::Listener::MemoryChanged(const Team::MemoryChangedEvent
& event
)