> On May 13, 2016, at 9:13 AM, Zachary Turner <ztur...@google.com> wrote:
> 
> On Intel processors, the best way to do this is probably going to be to walk 
> the page directory (see Intel processor manuals).  Assuming someone 
> implements this command in lldb, I hope it can be done in such a way as to 
> allow different implementations when one os/architecture has a better way of 
> doing it.

This would fall out naturally if the gathering of the data is done in 
debugserver/lldb-server, which seems to me the natural place for this work to 
be done.

Jim


> 
> On Thu, May 12, 2016 at 11:09 AM Jim Ingham via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> You should be able to enumerate the memory that is occupied by loaded 
> executables, by getting the list of loaded Modules from the target, and 
> iterate through the all the Sections.  The Sections know their loaded 
> locations.  I assume all the mapped ones will return a valid load address 
> from GetLoadBaseAddress, so you can distinguish the loaded and unloaded ones. 
>  So you shouldn't need "readelf --segments" or "otool -l", lldb should know 
> this.
> 
> You can scan the currently active stacks, but we don't currently know the 
> allocated stack extents, just what is being used.  It would be interesting to 
> know the actual stack extents, so you could search in old stacks and to know 
> if you are close to exhausting the stack of a thread.
> 
> We don't have either a generic API, or internal implementations, for getting 
> all the mapped memory regions (or shared pages) of processes.  That would be 
> quite useful.  IIRC ptr_refs does this by injecting some code into the target 
> program that enumerates the regions.  Greg would know more about this.  Most 
> systems provide some API to get at this that works cross-process, but that 
> doesn't help debugging remotely.  So we either need to teach debugserver & 
> lldb-server to do this, or use appropriate code injection.  The gdb-remote 
> protocol has a query for the "memory map" of the process, though this is more 
> tailored to identify things like memory mapped registers.  Still it might be 
> possible to use this as well.
> 
> It would be nice to be able to separately query heap, executable & stack 
> memory as well.  Though a properly annotated memory map would give you a way 
> to do this, so that could be layered on top.
> 
> Jim
> 
> > On May 12, 2016, at 6:20 AM, Howard Hellyer via lldb-dev 
> > <lldb-dev@lists.llvm.org> wrote:
> >
> > I'm working on a plugin for lldb and need to scan the memory of a crashed 
> > process. Using the API to read chunks of memory and scan (via 
> > SBProcess::Read*) for what I'm looking for is easy but I haven't been able 
> > to find a way to find which address ranges are accessible. The 
> > SBProcess::Read* calls will return an error on an invalid address but it's 
> > not an efficient way to scan a 64 bit address space.
> >
> > This seems like it blocks simple tasks like scanning memory for blocks 
> > allocated with a header and footer to track down memory leaks, which is 
> > crude but traditional, and ought to be pretty quick to script via the 
> > Python API.
> >
> > At the moment I've resorted to running a python script prior to launching 
> > my plugin that takes the output of "readelf --segments", /proc/<pid>/maps 
> > or "otool -l" but this isn't ideal. On the assumption that I'm not missing 
> > something huge I've looked at whether it is possible to extend LLDB to 
> > provide this functionality and it seems possible, there are checks 
> > protecting calls to read memory that use the data that would need to be 
> > exposed. I'm working on a prototype implementation which I'd like to 
> > deliver back at some stage but before I go too far does this sound like a 
> > good idea?
> > Howard Hellyer
> > IBM Runtime Technologies, IBM Systems
> >
> >
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev@lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to