History log of /haiku/src/bin/debug/profile/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
b08627f3 04-May-2018 Murai Takashi <tmurai01@gmail.com>

Fix catching polymorphic type by value

Replace catching polymorphic type std::bad_alloc 'by value'
with 'by reference'.
Pointed by gcc8

220d0402 31-Jul-2014 Oliver Tappe <zooey@hirschkaefer.de>

Use libstdc++, libsupc++ and libgcc from gcc_syslibs.

* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
necessary since we're only using libgcc-as-single-object for libroot
with x86_gcc2, where the filtered object file doesn't exist. Should
the objects that used to be filtered cause any problems as part of
libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
x86_gcc2, we still build libstdc++.so from the sources in the Haiku
source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.

4dc355e9 27-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Adjust debug_utils functions.

The functions in question now return an error rather than simply calling
exit() directly when they fail, as this behavior wasn't acceptable for
e.g. Debugger. Adjusted all calling apps accordingly.

88cc4202 11-May-2013 Rene Gollent <anevilyak@gmail.com>

Improve basic profiler output a little.

If on gcc4, use the built-in demangling functions to present demangled
names in the output where possible.

74ec65d8 10-May-2013 Rene Gollent <anevilyak@gmail.com>

Fix profile to recognize commpage image.

196ab88d 30-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Extend debug_create_symbol_lookup_context().

- debug_create_symbol_lookup_context() now takes an image ID
parameter that can optionally be used to restrict the symbols
it gathers to only those of the targeted image rather than the
entire team, allowing for significantly more lightweight usage
when the desired image is known. The previous behavior can still
be obtained if desired by passing -1 as said ID.

- Adjust callers.

323b6546 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
* Other smaller cleanups, changes, and fixes.

24df6592 11-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Merged signals-merge branch into trunk with the following changes:
* Reorganized the kernel locking related to threads and teams.
* We now discriminate correctly between process and thread signals. Signal
handlers have been moved to teams. Fixes #5679.
* Implemented real-time signal support, including signal queuing, SA_SIGINFO
support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition
of the real-time signal range. Closes #1935 and #2695.
* Gave SIGBUS a separate signal number. Fixes #6704.
* Implemented <time.h> clock and timer support, and fixed/completed alarm() and
[set]itimer(). Closes #5682.
* Implemented support for thread cancellation. Closes #5686.
* Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554.
* Lots over smaller more or less related changes.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96

756b64fd 16-Dec-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed the obsolescent [B]Reference[able] API and replaced the remaining
uses. Fixes the gcc 2 acpi build.
* Renamed WeakReferenceable::{Add,Remove}Reference() to
{Acquire,Release}Reference() for consistency.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39871 a95241bf-73f2-0310-859d-f6bbb57e9c96

62ffe418 31-Jul-2010 Rene Gollent <anevilyak@gmail.com>

Don't free the symbol iterator on error here since the callers already do so, leading to a double free in such a case. Fixes CID 2008.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37827 a95241bf-73f2-0310-859d-f6bbb57e9c96

a8fe8c63 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Made ProfileResult::SetInterval() virtual, so SummaryProfileResult can
forward it.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35593 a95241bf-73f2-0310-859d-f6bbb57e9c96

75064315 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Made Team BReferenceable. Since teams are usually destroyed before their main
thread, we were accessing already destroyed Team objects.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35591 a95241bf-73f2-0310-859d-f6bbb57e9c96

c645be35 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed getopt string.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35589 a95241bf-73f2-0310-859d-f6bbb57e9c96

28f88875 21-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Made ProfileResult and ImageProfileResults BReferenceable.
* Added command line option '-S', which triggers a new summary mode. When
enabled the image/symbol hits aren't counted for individual threads
anymore, but summed up for all threads. The results are printed at the end.
Works together with all profiling modes (inclusive, exclusive, callgrind).

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35573 a95241bf-73f2-0310-859d-f6bbb57e9c96

6a28c22f 21-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

More refactoring:
* Renamed *ProfileResultImage to *ImageProfileResult.
* Separated the image result management from the *ProfileResult classes:
- The general per-thread image management functionality does now live in
- Introduced interface ImageProfileResultContainer which is implemented by
Thread. An instance is passed to ProfileResult::AddSamples()/PrintResult().
* Made *ProfileResultImage independent of Image. The dependency is now to
SharedImage only.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35556 a95241bf-73f2-0310-859d-f6bbb57e9c96

5fc675d5 20-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Some refactoring:
* Added new class ProfiledEntity which Thread derives from and which is the
new dependency for the profile result classes (instead of Thread).
* Renamed *ThreadProfileResult to *ProfileResult and *ThreadImage to
*ProfileResultImage and move ProfileResult[Image] into a new header/source

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35546 a95241bf-73f2-0310-859d-f6bbb57e9c96

19c4af89 20-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Superfluous virtuals (declared in the base class already).

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35544 a95241bf-73f2-0310-859d-f6bbb57e9c96

a39c92c2 20-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed superfluous typedef.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35543 a95241bf-73f2-0310-859d-f6bbb57e9c96

24a9c1bb 20-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* Added option "-r, --recorded" to profile: this will now retrieve the kernel
profile data area, and evaluate its data - it doesn't produce any output yet,
* _user_system_profiler_recorded() now also makes sure the userland app can read
from the buffer area.
* Fixed leak in SharedImage::Init().
* Made the symbol retriever more smart when it deals with kernel images; if the
image ID is no longer available, it will now use the path based image symbol
iterator (and also adds the boot kernel path, in case the module don't have

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31653 a95241bf-73f2-0310-859d-f6bbb57e9c96

7d7de072 20-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed a crashing bug in case creating the image symbol iterator failed.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31651 a95241bf-73f2-0310-859d-f6bbb57e9c96

227fe7d3 23-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Scheduler/wait object listener:
- Moved scheduler listening interface to <listeners.h> and added more
convenient to use templatized notification functions.
- Added a listener mechanism for the wait objects (semaphores, condition
variables, mutex, rw_lock).
* system profiler:
- Hopefully fixed locking issues related to notifying the profiler thread
for good. We still had an inconsistent locking order, since the scheduler
notification callbacks are invoked with the thread lock held and have to
acquire the object lock then, while the other callbacks acquired the object
lock first and as a side effect of ConditionVariable::NotifyOne() acquired
the thread lock. Now we make sure the object lock is the innermost lock.
- Track the number of dropped events due to a full buffer.
_user_system_profiler_next_buffer() returns this count now.
- When scheduling profiling events are requested also listen to wait objects
and generate the respective profiling events. We send those events lazily
and cache the infos to avoid resending an event for the same wait object.
- When starting profiling we do now generate "thread scheduled" events for
the already running threads.
- _user_system_profiler_start(): Check whether the parameters pointer is a
userland address at all.
- The system_profiler_team_added event does now also contain the team's name.
* Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe",
since the caller has to ensure that the semaphore exists and continues to
exist as long as the returned name is used.
* Adjusted the "profile" and "scheduling_recorder" according to the system
profiling changes. The latter prints the number of dropped events, now.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96

5b2f0f33 18-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Changed the interface of _kern_system_profiler_start(). The parameters are
passed in a structure now, so it is easier to extend it and ignore unused
* One can now select which system profiling events one is interested in.
* Added scheduling events to the system profiling interface. Those are pretty
much the ones recorded when scheduler tracing is enabled. Still missing are
the "wait object" events that allow to interpret what a thread is waiting

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30243 a95241bf-73f2-0310-859d-f6bbb57e9c96

644ab954 16-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for providing a command line also for the system profiling mode.
Just as in the other mode the command is started and profiling stops when the
command terminates.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30229 a95241bf-73f2-0310-859d-f6bbb57e9c96

f568799e 17-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Don't leak the Team objects for teams that are gone.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30228 a95241bf-73f2-0310-859d-f6bbb57e9c96

1b9d2885 16-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Also pass the team arguments and thread names with the respective system
profiling events.
* profile: Avoid using get_{team,thread}_info() in common code paths. The
system profiling mode is asynchronous, so the team or thread in question
could already be gone.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30193 a95241bf-73f2-0310-859d-f6bbb57e9c96

464e95c4 15-Apr-2009 Rene Gollent <anevilyak@gmail.com>

gcc4 build fix.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30186 a95241bf-73f2-0310-859d-f6bbb57e9c96

a0320c16 15-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Darn, should have been part of r30170 already.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30173 a95241bf-73f2-0310-859d-f6bbb57e9c96

1836e909 15-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* In exclusive mode we no longer stop searching when we have found an image
for a stack trace, if we haven't actually hit a symbol in the image. This
way we don't get "unknown" image hits for PLT slots anymore.
* In system profiling mode add the kernel images to new teams. The mode should
be usable now. Well, except maybe for the amount of data one gets.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30172 a95241bf-73f2-0310-859d-f6bbb57e9c96

afa231ac 15-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Reorganized the image management. Introduced a SharedImage which knows the
symbols and is identified by name. Image does still represent a team-bound
image, but it refers to a SharedImage for the symbols, now. This allows us
to load the symbols for a shared object only once and share the data for all
teams referring to it.
* Made the area used for system profiling writable. "-a -f" would segfault
since the return addresses are sorted in-place.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30170 a95241bf-73f2-0310-859d-f6bbb57e9c96

e52c3559 14-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Renamed debug_delete_image_symbol_iterator() to
* Added debug_create_file_symbol_iterator() which opens a shared object file.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30162 a95241bf-73f2-0310-859d-f6bbb57e9c96

0f379156 11-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* debug_create_symbol_lookup_context() gets a team ID instead of a
debug context now. That's all it needs.
* Added the option "-a" to the profile command line tool. It triggers profiling
of the whole system. There are still some issues, particularly image related

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30129 a95241bf-73f2-0310-859d-f6bbb57e9c96

fd0803f3 06-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Added RemoveTail() method.
* Renamed DoublyLinkedList::Size() to Count(), since it actually counts the
items (ie. O(n)).

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29979 a95241bf-73f2-0310-859d-f6bbb57e9c96

cd65e69b 01-Nov-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Callgrind output: Encode the thread name and the total time the thread
used into the file name. This makes it easier to find the thread(s) one
is looking for.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28446 a95241bf-73f2-0310-859d-f6bbb57e9c96

e5c63668 01-Nov-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

AbstractThreadProfileResult::SynchronizeImages(): New images were only
added, if their creation event was now or in the future. Obviously we're
only interested in images that do already exist, though. Also get rid of
"new" images that already have been deleted in the meantime.
Fixes problem that for some threads (almost) no images were added and
thus no functions could be resolved.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28441 a95241bf-73f2-0310-859d-f6bbb57e9c96

ee0d2e64 08-Oct-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Right check, wrong place. The "-C" option (don't profile child teams)
was broken.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27926 a95241bf-73f2-0310-859d-f6bbb57e9c96

6486b756 01-Oct-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Callgrind output: Added the missing time costs in the "summary" line.
Also added the missing "totals" line.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27817 a95241bf-73f2-0310-859d-f6bbb57e9c96

9aabd0ab 30-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added option "-v <directory>". The tool will generate output files in
valgrind's callgrind format in the given directory. Those can be
analyzed with graphical tools like KCachegrind.
Recursive functions are probably not handled correctly yet.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27804 a95241bf-73f2-0310-859d-f6bbb57e9c96

39be9709 30-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Moved counting/getting the hit images into separate utility method
GetHitImages() of base class AbstractThreadProfileResult.
* gcc 4 build fixes.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27797 a95241bf-73f2-0310-859d-f6bbb57e9c96

051fad0f 29-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

More refactoring:
* Moved the BasicThreadProfileResult class, its subclasses and related
code into separate files.
* Made ThreadImage an abstract base class. Pulled the meaty part into
new subclass BasicThreadImage.
* Templatized AbstractThreadProfileResult over the ThreadImage type.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27788 a95241bf-73f2-0310-859d-f6bbb57e9c96

8e28c17f 29-Sep-2008 Karsten Heimrich <host.haiku@gmx.de>

* gcc4/ build fix

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27783 a95241bf-73f2-0310-859d-f6bbb57e9c96

72e19fd4 29-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Pulled subclass BasicThreadProfileResult out of
AbstractThreadProfileResult. The latter only manages the images, now.
Moved the AddSamples() code into BasicThreadProfileResult subclasses that
handle it depending on whether the function hits are counted inclusively
or exclusively ("-f" option).

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27782 a95241bf-73f2-0310-859d-f6bbb57e9c96

ed2fc873 29-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Some refactoring: Separated the profile result collection from the
thread management. There's now a ThreadProfileResult (abstract base
class) object associated with a Thread object. Currently there's only
one (currently misnamed) derived class AbstractThreadProfileResult, but
some more refactoring will make the purpose clearer.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27780 a95241bf-73f2-0310-859d-f6bbb57e9c96

120cfc62 29-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Moved several classes into their own files.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27779 a95241bf-73f2-0310-859d-f6bbb57e9c96