Right you are. Playing with core files can bite you. While this code enables you to look at core files on a different platform, it does not require it. There is support in SA for moving library files from a different system (via the SA_ALT_ROOT environment variable).
/Staffan On 8 maj 2012, at 17:27, Kelly O'Hair wrote: > > On May 8, 2012, at 4:11 AM, Staffan Larsen wrote: > >> The Serviceability Agent currently has an outage on Mac OS X compared to >> other platforms in that we cannot read core files. We plan to address this >> for 7u6 by incorporating code from a separate tool called "kjdb" developed >> at Oracle. Kjdb is a cross-platform core-file debugger written completely in >> Java that currently works on ELF (solaris, linux) and Mach-O (mac) core >> files. Since it is written in Java it can read core files from a different >> system than the system you are running kjdb on, which is very useful. > > Keep in mind that a core file usually does not capture the entire process > image, shared system library text sections (shared code of the system) > is typically not included, which creates a situation where a core file cannot > be transported from the specific system it was created on > and interpreted 100% correctly on any similar system. Unless you can > guarantee that the two systems have the exact same system shared libraries. > As far as I know, there is no tracking of this issue, and consequently, core > files can only be trusted to be valid on the system that created it. > > We had many discussions on this topic when I was in the dbx team. First there > is a question of validation, 'how do you know the use of the core file is > correct?' > and then how do you get the right information 'can we access the shared > libraries of the system that created the core file?' > > So be careful with core files, even as big as they are, there is missing > information, and they become less and less accurate as > you drift away from the system that created it. > > Having given you my warning on core files.... It has been a long time since > I used libelf and walked around Elf files, > now you have me curious what this Java code looks like. It is an interesting > idea/approach. > > -kto > >> >> The alternative to incorporating the kjdb technology would have been to >> implement this in C as is done for the other platforms, but reusing existing >> code saves us some trouble. The kjdb debugger backend will automatically be >> enabled when you are opening a Mach-O core file (or if you explicitly set >> the -Duse.kjdb property when starting SA). >> >> The risks with this is that this is a large addition of relatively new code >> to SA (around 100 files). It also means that debugging a live process or a >> core file on OS X will use different debugger backends which may have >> different behavior and bugs. >> >> This change also adds a basic test that creates a core file and uses SA to >> print the thread dumps in the core. This test runs on all platforms, not >> just Mac OS X. Other than that test, some level of manual testing has been >> done with various core files. >> >> Please see the webrev at: http://cr.openjdk.java.net/~sla/kjdb/webrev.01/ >> >> There are quite a number of added files in this webrev, so it's probably >> best to concentrate on the changes in the existing files. >> >> Thanks, >> /Staffan >