<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jan 4, 2019, at 12:37 PM, Leonard Mosescu <<a href="mailto:mosescu@google.com" class="">mosescu@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Sounds very useful. Are you planning to add it to the LLDB repository?</div></div></blockquote><div><br class=""></div>Yes<br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Fri, Jan 4, 2019 at 10:56 AM Greg Clayton <<a href="mailto:clayborg@gmail.com" class="">clayborg@gmail.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;" class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Jan 4, 2019, at 9:45 AM, Leonard Mosescu <<a href="mailto:mosescu@google.com" target="_blank" class="">mosescu@google.com</a>> wrote:</div><br class="gmail-m_7456183298312665668Apple-interchange-newline"><div class=""><div dir="ltr" class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I have a minidump generator if you need me to make any specific minidump files for you.<br class=""></blockquote><div class=""><br class=""></div><div class="">Maybe not in this case, but it seems an interesting idea. What are the capabilities of this generator tool?</div></div></div></blockquote><div class=""><br class=""></div>I can generate threads contexts, any of the textual directory streams, memory regions (32 and 64), module lists, and more.</div><div class=""><br class=""></div><div class="">Example code from my python "minidump" module that shows generation of a minidump. Not all of this goes together (example code for ARM and ARM64), but it shows what you can easily do:</div><div class=""><br class=""></div><div class="">system_info = minidump.SystemInfo(<br class="">        ProcessorArchitecture=minidump.PROCESSOR_ARCHITECTURE_ARM64,<br class="">        PlatformId=minidump.VER_PLATFORM_LINUX,<br class="">        CSDVersion=minidump.String('15E216'))<br class=""><br class="">md = minidump.Generator(system_info, ProcessId=123)<br class=""><br class="">x = []<br class="">v = []<br class="">for i in range(32):<br class="">    x.append(i+1 | i+2 << 32 | i+3 << 48)<br class="">for i in range(32):<br class="">    for j in range(16):<br class="">        v.append(i+j)<br class=""><br class="">thread = minidump.Thread(ThreadId=0x1000,<br class="">                            Registers=minidump.ThreadContext_ARM64(<br class="">                                x=x, pc=0x1000, cpsr=0x11223344,<br class="">                                fpsr=0x55667788, fpcr=0x99AABBCC, v=v))<br class=""><br class="">system_info = minidump.SystemInfo(<br class="">        ProcessorArchitecture=minidump.PROCESSOR_ARCHITECTURE_ARM,<br class="">        PlatformId=minidump.VER_PLATFORM_MACOSX,<br class="">        CSDVersion=minidump.String('ABC123'))<br class=""><br class="">md = minidump.Generator(system_info, ProcessId=123)<br class=""><br class="">r = []<br class="">d = []<br class="">extra = []<br class="">for i in range(1, 17):<br class="">    r.append(i)<br class="">for i in range(1, 33):<br class="">    d.append(i | i << 8 | i << 32 | i << 48)<br class="">for i in range(8):<br class="">    extra.append(i | i << 16)<br class=""><br class="">thread = minidump.Thread(ThreadId=0x1000,<br class="">                            Registers=minidump.ThreadContext_ARM(<br class="">                                r=r, cpsr=0x11223344,<br class="">                                fpscr=0x55667788AABBCCDD, d=d,<br class="">                                extra=extra))<br class="">md.add_thread(thread)<br class="">md.add_thread(minidump.Thread(ThreadId=0x55667788))<br class=""><br class="">md.add_module(minidump.Module(BaseOfImage=0x10000,<br class="">                                SizeOfImage=0x2000,<br class="">                                CheckSum=0,<br class="">                                TimeDateStamp=0,<br class="">                                ModuleName="/tmp/b",<br class="">                                VersionInfo=None,<br class="">                                CvRecord=None,<br class="">                                MiscRecord=None,<br class="">                                Reserved0=0,<br class="">                                Reserved1=0))<br class=""><br class="">md.add_module(minidump.Module(BaseOfImage=0x2000,<br class="">                                SizeOfImage=0x1000,<br class="">                                CheckSum=0,<br class="">                                TimeDateStamp=0,<br class="">                                ModuleName="/tmp/a",<br class="">                                VersionInfo=None,<br class="">                                CvRecord=None,<br class="">                                MiscRecord=None,<br class="">                                Reserved0=0,<br class="">                                Reserved1=0))<br class=""><br class="">md.add_module(minidump.Module(BaseOfImage=0x1000,<br class="">                                SizeOfImage=0x1000,<br class="">                                CheckSum=0,<br class="">                                TimeDateStamp=0,<br class="">                                ModuleName="/tmp/b",<br class="">                                VersionInfo=None,<br class="">                                CvRecord=None,<br class="">                                MiscRecord=None,<br class="">                                Reserved0=0,<br class="">                                Reserved1=0))<br class=""><br class=""><br class="">md.add_module(minidump.Module(BaseOfImage=0x5000,<br class="">                                SizeOfImage=0x3000,<br class="">                                CheckSum=0,<br class="">                                TimeDateStamp=0,<br class="">                                ModuleName="/tmp/b",<br class="">                                VersionInfo=None,<br class="">                                CvRecord=None,<br class="">                                MiscRecord=None,<br class="">                                Reserved0=0,<br class="">                                Reserved1=0))<br class="">md.add_memory(minidump.MemoryDescriptor(StartOfMemoryRange=0x8000,<br class="">                                        Bytes='Hello world!'))<br class="">md.add_memory(minidump.MemoryDescriptor(StartOfMemoryRange=0x8010,<br class="">                                        Bytes='Goodbye moon...'))<br class="">md.add_memory64(minidump.MemoryDescriptor64(StartOfMemoryRange=0x1000,<br class="">                                            Bytes='1' * 16))<br class="">md.add_memory64(minidump.MemoryDescriptor64(StartOfMemoryRange=0x2000,<br class="">                                            Bytes='3' * 32))<br class=""><br class="">md.add_memory(minidump.MemoryDescriptor(StartOfMemoryRange=0x1000,<br class="">                                        Bytes='1' * 16))<br class="">md.add_memory(minidump.MemoryDescriptor(StartOfMemoryRange=0x2000,<br class="">                                        Bytes='3' * 32))<br class=""><br class="">maps = '''400d9000-400db000 r-xp 00000000 b3:04 227        /system/bin/app_process<br class="">400db000-400dc000 r--p 00001000 b3:04 227        /system/bin/app_process<br class="">400dc000-400dd000 rw-p 00000000 00:00 0 <br class="">'''<br class="">md.add_stream_as_string(minidump.BreakpadLinuxMaps, maps)<br class=""></div><div class="">pad = True<br class="">addr_size = 4<br class="">md.save("/tmp/minidump.dmp", addr_size, pad)</div><div class=""><br class=""></div><div class=""><br class=""><br class=""></div></div></blockquote></div>
</div></blockquote></div><br class=""></body></html>