History log of /haiku/src/kits/debug/debug_support.cpp
Revision Date Author Comments
# 992ae400 18-Jan-2020 Murai Takashi <tmurai01@gmail.com>

Fix catching by value

Pointed out by LGTM.
Change-Id: I223655c728305f6f45b3738553da5b7d7a69e8c8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2134
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 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.


# 6997467e 31-Dec-2010 Rene Gollent <anevilyak@gmail.com>

Fix an instance where an allocation wasn't checked for success.
Wrap call to SymbolLookup::Init() in a try/catch block since it could
potentially throw an exception. This was causing the debugger to terminate
in some instances.



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


# 68258fd9 14-Dec-2010 Rene Gollent <anevilyak@gmail.com>

Actually copy the data to be written into the message.



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


# 6cdfe550 13-Dec-2010 Rene Gollent <anevilyak@gmail.com>

Add write counterparts to debug_read_memory/debug_read_memory_partial.



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


# 9774f385 03-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added debug_get_symbol(). It's not implemented particularly efficiently, though.


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


# 39df6341 15-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added debug_get_symbol_iterator_image_info() to get an image_info from a
symbol iterator.


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


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

* Renamed debug_delete_image_symbol_iterator() to
debug_delete_symbol_iterator().
* 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


# 60dd1916 14-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the SymbolLookup dependency in debug_next_image_symbol().


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


# 73677f78 12-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Some refactoring: There are three ways to access the symbols of an image.
Formerly two were implemented in ImageFile (from file, via syscalls) and one
in SymbolLookup (via the debugger interface). Now there's a base class Image
and respective derived classes implementing those methods.
* Simplified SymbolIterator.
* Moved the classes into sub-namespace BPrivate::Debug.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30142 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
ones.


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


# abb2df34 18-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* SymbolLookup: Implemented loading the symbol tables from the shared
object files. Thus static functions will be found, too.
* debug_lookup_symbol_address() and debug_next_image_symbol() no longer
need to read the symbol name via the debugger API, since the
respective SymbolLookup methods compute the length of the symbol name
that can safely be accessed locally, now.


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


# eb333098 17-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added work-around for a runtime loader problem after fork(). Its image
structures still have the parent IDs, so finding an image by ID would
fail in this case. We do now fall back to getting the image's text base
address and finding the image by address.


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


# 68e6763b 14-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added functionality for iterating through the symbols of a debugged
team's image to libdebug.


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


# 28ff3e2c 23-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* the name of an image is actually B_PATH_NAME_LENGTH long


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


# 758b1d0e 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



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


# a7926570 19-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Set the members of a destroyed debug_context to invalid values.

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


# 9a323d35 16-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for looking up symbols of other team to libdebug. The
debug_server uses this feature to print stack traces with symbols.



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


# b2c1ecd6 28-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added patch originally written by Ingo Weinhold:
- extended libdebug.so functionality to be able to get stack frames,
current instruction pointer, etc.
- changed the debug_server to be able to run as a simple BLooper - this
saves some trouble when the app_server dies
- the debug_server now prints out a stack crawl for the crashed team
(without symbols, though - for that data to be helpful you should
have a look at the loaded images (ie. where they start))
- the debug_server now also prints the team name when it kills it


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


# 0a064776 20-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Added the beginnings of a small private API for debug support.
Entirely implemented on top of the public <debugger.h> API, but more
convenient to use. Lives in a separate library libdebug.so.



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


# 196ab88d06ca479b6d6ab2ab974c1dd0c899a088 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.


# 6997467eea5b79eec323fa681b373ef7295c9c7a 31-Dec-2010 Rene Gollent <anevilyak@gmail.com>

Fix an instance where an allocation wasn't checked for success.
Wrap call to SymbolLookup::Init() in a try/catch block since it could
potentially throw an exception. This was causing the debugger to terminate
in some instances.



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


# 68258fd9d09d007b8a4e5dbdcc15a086658419fc 14-Dec-2010 Rene Gollent <anevilyak@gmail.com>

Actually copy the data to be written into the message.



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


# 6cdfe5505c11c511e26d619a4b476cf01f15dfdc 13-Dec-2010 Rene Gollent <anevilyak@gmail.com>

Add write counterparts to debug_read_memory/debug_read_memory_partial.



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


# 9774f385b5b79b1128c47b270f9c9ec54fc1cd90 03-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added debug_get_symbol(). It's not implemented particularly efficiently, though.


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


# 39df634176f68a4089804907c54ce20300a9d88d 15-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added debug_get_symbol_iterator_image_info() to get an image_info from a
symbol iterator.


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


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

* Renamed debug_delete_image_symbol_iterator() to
debug_delete_symbol_iterator().
* 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


# 60dd191612ef4a029b89ebce60bb6db92a260fa4 14-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the SymbolLookup dependency in debug_next_image_symbol().


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


# 73677f785acf3360a0194dbd2d243fa9d56c9782 12-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Some refactoring: There are three ways to access the symbols of an image.
Formerly two were implemented in ImageFile (from file, via syscalls) and one
in SymbolLookup (via the debugger interface). Now there's a base class Image
and respective derived classes implementing those methods.
* Simplified SymbolIterator.
* Moved the classes into sub-namespace BPrivate::Debug.


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


# 0f3791568750bf18150d932c1e5fba2a215b9344 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
ones.


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


# abb2df34ee5bc3fbb3f47fae3f7969dfe4126348 18-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* SymbolLookup: Implemented loading the symbol tables from the shared
object files. Thus static functions will be found, too.
* debug_lookup_symbol_address() and debug_next_image_symbol() no longer
need to read the symbol name via the debugger API, since the
respective SymbolLookup methods compute the length of the symbol name
that can safely be accessed locally, now.


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


# eb333098fe361d36e330fe35707a75a21b18686f 17-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added work-around for a runtime loader problem after fork(). Its image
structures still have the parent IDs, so finding an image by ID would
fail in this case. We do now fall back to getting the image's text base
address and finding the image by address.


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


# 68e6763b074c48a3e3302b2162031c71110abe51 14-Sep-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added functionality for iterating through the symbols of a debugged
team's image to libdebug.


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


# 28ff3e2c9a44f8e06a5191a5825c13789ed49a2f 23-Jan-2008 Stephan Aßmus <superstippi@gmx.de>

* the name of an image is actually B_PATH_NAME_LENGTH long


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


# 758b1d0e05fe1042cce6e00d194a147802d4f9be 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



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


# a79265708d6d213a1aef4cee9b85a190e818029f 19-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Set the members of a destroyed debug_context to invalid values.

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


# 9a323d3533ed56555d16790d139f139e35b82a1f 16-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for looking up symbols of other team to libdebug. The
debug_server uses this feature to print stack traces with symbols.



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


# b2c1ecd640f14d0e85fefac0044dbf30ab142318 28-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added patch originally written by Ingo Weinhold:
- extended libdebug.so functionality to be able to get stack frames,
current instruction pointer, etc.
- changed the debug_server to be able to run as a simple BLooper - this
saves some trouble when the app_server dies
- the debug_server now prints out a stack crawl for the crashed team
(without symbols, though - for that data to be helpful you should
have a look at the loaded images (ie. where they start))
- the debug_server now also prints the team name when it kills it


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


# 0a064776aea61537373f7d3508139ab395717228 20-Mar-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Added the beginnings of a small private API for debug support.
Entirely implemented on top of the public <debugger.h> API, but more
convenient to use. Lives in a separate library libdebug.so.



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