DynamoRIO / dynamorio

Dynamic Instrumentation Tool Platform
Other
2.58k stars 552 forks source link

drsyms sideline symbol server #446

Open derekbruening opened 9 years ago

derekbruening commented 9 years ago

From bruen...@google.com on May 06, 2011 11:42:05

split from issue #44 see all the comments in that issue regarding sideline support this issue covers a sideline implementation on both linux and windows

sideline is needed in cases where symbols don't fit into the app's process (see https://code.google.com/p/dynamorio/issues/detail?id=44#c11 )

my drsyms API assumes sideline will use the same synchronous interface as online, and uses shared memory, with a shmid passed to drsym_init(), so the sideline server must be launched ahead of time. we can revisit that decision but if we want to provide an asynchronous model I would suggest adding another set of interfaces for that and keeping the synchronous ones working with sideline.

here are some notes from earlier discussions including proposals of having the sym server queries have tunable timeouts:

Shared memory is definitely the best choice for Linux and Windows. For Windows the keys are strings. See api/samples/stats.c for code using syscall/ntdll layer (for DR), and tools/DRgui/DynamoRIOView.cpp for code using Win32 API (for symbol server).

I would vote for what you listed under Optimization:

Then we don't have any client queries going to the symbol server: DR answers them synchronously from its platform-independent symbol tables, and only DR's entire-module queries go to the symbol server.

Original issue: http://code.google.com/p/dynamorio/issues/detail?id=446

derekbruening commented 9 years ago

From bruen...@google.com on May 06, 2011 08:50:23

from my original commit notes:

derekbruening commented 9 years ago

From bruen...@google.com on June 15, 2011 11:05:05

xref issue #498 on exposing whatever IPC method is used here through the API