[lldb-dev] How to debug a core file with lldb?

Sara Burke Sara.Burke at mathworks.com
Thu Nov 1 10:39:53 PDT 2012


Great, thanks Greg. I must not have the most up-to-date lldb version, for I see the following when I do the same commands:

(lldb) version
LLDB-112.2
(lldb) apropos core
No commands found pertaining to 'core'. Try 'help' to see a complete list of debugger commands.
(lldb) help target create
   Create a target using the argument as the main executable.

Syntax: target create <cmd-options> <filename>

Command Options Usage:
  target create [-a <arch>] [-p <platform-name>] [-v <none>] [-b <none>] [-s <filename>] <filename>

       -a <arch>  ( --arch <arch> )
            Specify the architecture for the target.

       -b  ( --build )
            Specify the initial SDK build number.

       -p <platform-name>  ( --platform <platform-name> )
            Specify name of the platform to use for this target, creating the platform if necessary.

       -s <filename>  ( --sysroot <filename> )
            Specify the SDK root directory that contains a root of all remote system files.

       -v  ( --version )
            Specify the initial SDK version to use prior to connecting.

(lldb) target create --core /cores/core.1235
lldb: unrecognized option `--core'
error: unknown or ambiguous option

Could you tell me what vernon of lldb the core support is in? Thanks!


On Nov 1, 2012, at 1:35 PM, Greg Clayton wrote:


On Nov 1, 2012, at 8:30 AM, Sara Burke <Sara.Burke at mathworks.com<mailto:Sara.Burke at mathworks.com>> wrote:

Hi lldb-dev,

I have a question regarding debugging a core file. With gdb, one can specify -c <core_file> to debug a core file. However, I can find no documentation to do this with lldb. Is there such a way? lldb seems to think the core file is an executable, which isn't necessarily what I would like. Any suggestions?


(lldb) apropos core
The following commands may relate to 'core':
target create -- Create a target using the argument as the main executable.
(lldb) help target create
  Create a target using the argument as the main executable.

Syntax: target create <cmd-options> <filename>

Command Options Usage:
 target create [-a <arch>] [-p <platform-name>] [-v <none>] [-b <none>] [-s <filename>] [-c <path>] <filename>

      -a <arch>  ( --arch <arch> )
           Specify the architecture for the target.

      -b  ( --build )
           Specify the initial SDK build number.

      -c <path>  ( --core <path> )
           Fullpath to a core file to use for this target.

      -p <platform-name>  ( --platform <platform-name> )
           Specify name of the platform to use for this target, creating the platform if necessary.

      -s <filename>  ( --sysroot <filename> )
           Specify the SDK root directory that contains a root of all remote system files.

      -v  ( --version )
           Specify the initial SDK version to use prior to connecting.

This command takes options and arguments, if your arguments look like option specifiers you must use '--' to terminate the options before starting to give the arguments.



So there is documentation.

(lldb) target create --core /cores/core.1235

You can optionally give us the architecture and/or executable file if you know them:

(lldb) target create --core /cores/core.1235 --arch x86_64 /path/to/executable

After this commend, you can then do a:

(lldb) thread list
(lldb) thread backtrace all

Core files only work for mach-o core files right now. ELF support hasn't been done yet, but there is good sample code to follow in the following directory:

lldb/source/Plugins/Process/mach-core





-----------------------------------------------------------------
 Sara M. Burke
 Ext. 7476

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20121101/e7153598/attachment.html>


More information about the lldb-dev mailing list