summaryrefslogtreecommitdiffstats
path: root/lldb/examples/python/crashlog.py
Commit message (Collapse)AuthorAgeFilesLines
* crashlog.py: Improve regular expressionsAdrian Prantl2019-11-071-8/+22
| | | | | | | | | | | | | | | | | | | This is yet another change to the regular expressions in crashlog.py that fix a few edge cases, and attempt to improve the readability quite a bit in the process. My last change to support spaces in filenames introduced a bug that caused the version/archspec field to be parsed as part of the image name. For example, in "0x1111111 - 0x22222 +MyApp Pro arm64 <01234>", the name of the image was recognized as "MyApp Pro arm64" instead of "MyApp Pro" with a "version" of arm64. The bugfix makes the space following an optional field mandatory *inside* the optional group. rdar://problem/56883435 Differential Revision: https://reviews.llvm.org/D69871
* [crashlog] Fix a mismatch between bytes and strings.Davide Italiano2019-07-091-1/+1
| | | | | | | | | The functions in read_plist() want bytes as input, not strings. <rdar://problem/52600712> llvm-svn: 365416
* Python 3: decode string as utf-8 to avoid type mismatch.Adrian Prantl2019-06-141-5/+5
| | | | | | | | rdar://problem/51464644 Differential Revision: https://reviews.llvm.org/D63311 llvm-svn: 363413
* Make crashlog.py less noisyAdrian Prantl2019-06-141-9/+27
| | | | | | | | | | | For end-users there is no point in printing dSYM load errors for system frameworks, since they will all fail and there's nothing they can do about it. This patch hides them by default and shows them when --verbose is present. Differential Revision: https://reviews.llvm.org/D63310 llvm-svn: 363412
* [lldb] Ignore null frames in lldb.macosx crashlogStefan Granitz2019-06-121-0/+4
| | | | llvm-svn: 363172
* [crashlog] Add a missing call to decode.Davide Italiano2019-05-301-1/+1
| | | | | | <rdar://problem/51139357> llvm-svn: 362044
* [crashlog] Use loads() instead of readPlistFromString() for python 3.Davide Italiano2019-05-181-1/+7
| | | | | | <rdar://problem/50903413> llvm-svn: 361087
* [crashlog] Strip trailing `\n` from check_output return.Davide Italiano2019-04-181-1/+1
| | | | | | | | Generally having spurious `\n` doesn't matter, but here the returning string is a command which is executed, so we want to strip it. Pointed out by Jason. llvm-svn: 358717
* [crashlog] Use the right path for dsymforUUID and remove an unnecessary import.Davide Italiano2019-04-171-6/+1
| | | | | | <rdar://problem/49925960> llvm-svn: 358615
* Portable exception value access across Python 2 / Python 3Serge Guelton2019-03-211-1/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D59583 llvm-svn: 356670
* crashlog.py: Catch exception from subprocess.Adrian Prantl2019-03-071-1/+5
| | | | llvm-svn: 355572
* [Python] Unbreak the recently modified tests for python 2.Davide Italiano2019-03-061-0/+1
| | | | llvm-svn: 355566
* [testsuite] Port crashlog to python 3, second attempt.Davide Italiano2019-03-061-63/+63
| | | | llvm-svn: 355562
* Revert "[testsuite] Port crashlog and dependencies to Python 3."Davide Italiano2019-03-051-67/+62
| | | | | | | This revert the commit because it broke the bots. I need to find a way that works with both versions. llvm-svn: 355364
* [testsuite] Port crashlog and dependencies to Python 3.Davide Italiano2019-03-051-62/+67
| | | | | | Fixes three tests in the testsuite. llvm-svn: 355359
* Fix use of non-existing variable in crashlog.pyShafik Yaghmour2019-01-311-1/+1
| | | | | | | | | Summary: The method find_matching_slice(self) uses uuid_str on one of the paths but the variable does not exist and so this results in a NameError exception if we take that path. Differential Revision: https://reviews.llvm.org/D57467 llvm-svn: 352772
* Make crashlog.py work or binaries with spaces in their namesAdrian Prantl2018-12-171-21/+10
| | | | | | | | | | | | This is a little dangerous since the crashlog files aren't 100% unambiguous, but the risk is mitigated by using a non-greedy +? pattern. rdar://problem/38478511 Differential Revision: https://reviews.llvm.org/D55608 llvm-svn: 349367
* Make crashlog.py work when a .dSYM is present, but a binary is missingAdrian Prantl2018-12-171-15/+37
| | | | | | | | | | Often users have a crash log an d a .dSYM bundle, but not the original application binary. It turns out that for crash symbolication, we can safely fall back to using the binary inside the .dSYM bundle. Differential Revision: https://reviews.llvm.org/D55607 llvm-svn: 349366
* The save_crashlog command was still looking at lldb.target andJim Ingham2017-10-121-6/+7
| | | | | | | lldb.process. That hasn't worked for a long time. Convert it to the form that takes an SBExecutionContext and use that instead. llvm-svn: 315549
* Print the error if dsymForUUID sometimes produces bad plists.Jim Ingham2017-03-281-1/+5
| | | | | | | Not much we can do about it but at least we can print the bad plist and the error. llvm-svn: 298958
* Improve crashlog.py so it can handle more iOS crashlog files.Greg Clayton2016-12-081-0/+11
| | | | | | <rdar://problem/29191857> llvm-svn: 289006
* *** This commit represents a complete reformatting of the LLDB source codeKate Stone2016-09-061-204/+375
| | | | | | | | | | | | | | | | | | | | | | | *** to conform to clang-format’s LLVM style. This kind of mass change has *** two obvious implications: Firstly, merging this particular commit into a downstream fork may be a huge effort. Alternatively, it may be worth merging all changes up to this commit, performing the same reformatting operation locally, and then discarding the merge for this particular commit. The commands used to accomplish this reformatting were as follows (with current working directory as the root of the repository): find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} + find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ; The version of clang-format used was 3.9.0, and autopep8 was 1.2.4. Secondly, “blame” style tools will generally point to this commit instead of a meaningful prior commit. There are alternatives available that will attempt to look through this change and find the appropriate prior commit. YMMV. llvm-svn: 280751
* Fixed a few places that were building a regex from an identifier without ↵Greg Clayton2016-06-101-1/+1
| | | | | | | | escaping the identifier text. <rdar://problem/26090553> llvm-svn: 272423
* Remove a few uses of lldb.target, which is not validJim Ingham2015-06-231-5/+6
| | | | | | in a scripted command. llvm-svn: 240451
* Add a call to SBDebugger:Destroy() at the end of the self-hostedJason Molenda2015-04-011-0/+1
| | | | | | | | | | version of this script. We picked up a bug at some point in March where scripts that fail to call SBDebugger::Destroy() will crash in the Debugger C++ dtor. I want to track the change down which introduced the change - but this script should be calling SBDebugger::Destroy() in the first place, so do that. llvm-svn: 233779
* symbolicate the application specific backtraces that are in MacOSX crash log ↵Greg Clayton2015-03-051-77/+121
| | | | | | | | files. <rdar://problem/20039160> llvm-svn: 231415
* Fixed an issue where if you called:Greg Clayton2014-04-071-1/+2
| | | | | | | | | | | | | | | | | SBTarget::AddModule(const char *path, const char *triple, const char *uuid_cstr, const char *symfile); If "symfile" was filled in, it would cause us to not correctly add the module. Same goes for: SBTarget::AddModule(SBModuleSpec ...) Where you filled in the symfile. <rdar://problem/16529799> llvm-svn: 205750
* <rdar://problem/13477795>Greg Clayton2013-04-041-2/+2
| | | | | | crashlog.py was always subtracting 1 to point to the previous instruction when symbolicating ARM backtraces. Many times the backtraces will include bit zero set to 1 to indicate thumb, so we need to make sure we mask the address and then backup one for non frame zero frames. llvm-svn: 178812
* Made crashlog.py handle cases where a parentSean Callanan2013-01-121-3/+5
| | | | | | | | | process's name contains spaces. Thanks to Justin Seyster for the patch. <rdar://problem/13002540> llvm-svn: 172294
* Added auto LLDB import to the crashlog script.Greg Clayton2012-09-191-2/+32
| | | | llvm-svn: 164192
* Make the tab character in the thread frame lines optional.Jason Molenda2012-08-311-1/+1
| | | | llvm-svn: 163037
* <rdar://problem/11757916>Greg Clayton2012-08-291-5/+8
| | | | | | | | | | | | Make breakpoint setting by file and line much more efficient by only looking for inlined breakpoint locations if we are setting a breakpoint in anything but a source implementation file. Implementing this complex for a many reasons. Turns out that parsing compile units lazily had some issues with respect to how we need to do things with DWARF in .o files. So the fixes in the checkin for this makes these changes: - Add a new setting called "target.inline-breakpoint-strategy" which can be set to "never", "always", or "headers". "never" will never try and set any inlined breakpoints (fastest). "always" always looks for inlined breakpoint locations (slowest, but most accurate). "headers", which is the default setting, will only look for inlined breakpoint locations if the breakpoint is set in what are consudered to be header files, which is realy defined as "not in an implementation source file". - modify the breakpoint setting by file and line to check the current "target.inline-breakpoint-strategy" setting and act accordingly - Modify compile units to be able to get their language and other info lazily. This allows us to create compile units from the debug map and not have to fill all of the details in, and then lazily discover this information as we go on debuggging. This is needed to avoid parsing all .o files when setting breakpoints in implementation only files (no inlines). Otherwise we would need to parse the .o file, the object file (mach-o in our case) and the symbol file (DWARF in the object file) just to see what the compile unit was. - modify the "SymbolFileDWARFDebugMap" to subclass lldb_private::Module so that the virtual "GetObjectFile()" and "GetSymbolVendor()" functions can be intercepted when the .o file contenst are later lazilly needed. Prior to this fix, when we first instantiated the "SymbolFileDWARFDebugMap" class, we would also make modules, object files and symbol files for every .o file in the debug map because we needed to fix up the sections in the .o files with information that is in the executable debug map. Now we lazily do this in the DebugMapModule::GetObjectFile() Cleaned up header includes a bit as well. llvm-svn: 162860
* Instead of using re.split and requiring two spaces between the "regname: ↵Jason Molenda2012-08-281-1/+2
| | | | | | | | | regvalue" pairs, use re.findall and specify the regexp of regname: regvalue that we're interested in. <rdar://problem/12188752> llvm-svn: 162806
* <rdar://problem/12087275>Greg Clayton2012-08-131-1/+1
| | | | | | Make the crashlog parser able to deal with spaces in the process name. llvm-svn: 161772
* Enable the "symbolicate" interactive command to symbolicate all crash logs ↵Greg Clayton2012-07-161-15/+18
| | | | | | | | | | | | | | | | | | | | | if no indexes are supplied. This can be handy to use as: (lldb) script import lldb.macosx.crashlog (lldb) crashlog -i /tmp/*.crash % symbolicate --crashed-only This will symbolicate all of the crash logs only for the crashed thread. Also print out the crash log index number in the output of the interactive "image" command: (lldb) script import lldb.macosx.crashlog (lldb) crashlog -i /tmp/*.crash % image LLDB.framework ... This then allows you to symbolicate a crash log by index accurately when you looked for an image of a specific version llvm-svn: 160316
* Show source by default for the first 4 frames of the crash thread. Also ↵Greg Clayton2012-07-131-13/+18
| | | | | | added options to allow showing source for all frames (--source-frames=NFRAMES) and for all threads (--source-all). llvm-svn: 160175
* Added the ability to see source context with each frame in the "crashlog" ↵Greg Clayton2012-07-131-8/+37
| | | | | | | | command with the "--source-context" (-C for short to match grep) option. Also made the symbolication of the crash logs more efficient when using the "--crashed-only" ("-c") option where only the crashed thread is symbolicated. We now only download the images for the frames in the crashed thread. llvm-svn: 160160
* Make the interactive command interpreter build into the "crashlog" command ↵Greg Clayton2012-07-031-0/+1
| | | | | | work correctly when run inside LLDB. Before this fix the "cmd.Cmd" object was trying to read from stdin itself and it was competing without command interpreter for the bytes. llvm-svn: 159688
* Listen to the "--verbose" flag when running "crashlog" and if verbose is ↵Greg Clayton2012-06-281-6/+7
| | | | | | | | enabled, then dump full paths to source files and modules. Changed much of the output that was coming out with "--verbose" over to use the new "--debug" flag. llvm-svn: 159363
* Added a "save_crashlog" command to the lldb.macosx.crashlog package that ↵Greg Clayton2012-06-271-1/+81
| | | | | | allow you to dump your current process state out to a crash log file. This will dump all of the target module information with all load addresses, UUID values, and shared library paths, as well as all thread stacks and the crash log header. This will make it easy for us to save the current state of a process and then reload it later into LLDB. llvm-svn: 159286
* Cleaned up some stuff in symbolication where we can now lazily get images ↵Greg Clayton2012-06-041-7/+11
| | | | | | | | when symbolicating after loading a crash log file. Added colorization to the gdbremote.py output and also added the ability to symbolicate the addresses in registers. llvm-svn: 157965
* Added the ability to run "symbolicate [options] <crashlog-index>" in ↵Greg Clayton2012-05-311-98/+123
| | | | | | interactive mode. llvm-svn: 157770
* Make sure to subtract one from the PC when doing the symbolication of stack ↵Greg Clayton2012-05-171-1/+6
| | | | | | frames when it isn't the zero'th frame. llvm-svn: 156974
* Fixed an exception when parsing crash logs.Greg Clayton2012-05-161-1/+2
| | | | llvm-svn: 156945
* Modified the symbolication.Image object to store its uuid as a uuid.UUID ↵Greg Clayton2012-05-111-23/+34
| | | | | | | | object and made an accessor for getting a normalized UUID value out of the image object. Modified the crashlog darwin module to always create a uuid.UUID object when making the symbolication.Image objects. Also modified it to handle some more types of crash log files and improved the register reading for thread registers of crashed threads. llvm-svn: 156596
* Make crashlog.py more robust when dealing with the "Version: ..." header ↵Johnny Chen2012-05-101-2/+8
| | | | | | | | from the crash log file. rdar://problem/11428134 llvm-svn: 156581
* Added an interactive mode to the "crashlog" command so that we can look at ↵Greg Clayton2012-05-041-83/+183
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | multiple crash logs at once and do some data mining. Added an interactive command prompt that allows you to do: % PYTHONPATH=./build/Debug/LLDB.framework/Resources/Python ; ./build/Debug//LLDB.framework/Resources/Python/lldb/macosx/crashlog.py -i ~/Downloads/crashes2/*.crash ) then you get an interactive prompt where you can search for data within all crash logs. For example you can do: % list which will list all crash logs And you can search for all images given an image basename, or full path: % image LLDB % image /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB % image LLDB.framework Which would all produce an output listing like: 40CD4430-7D27-3248-BE4C-71B1F36FC5D0 (1.132 - 132) /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB, __TEXT=[0x000000011f8bc000 - 0x0000000120d3efbf) B727A528-FF1F-3B20-9E4F-BBE96C7D922D (1.136 - 136) /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB, __TEXT=[0x000000011e7f7000 - 0x000000011fc7ff87) 4D6F8DC2-5757-39C7-96B0-1A5B5171DC6B (1.137 - 137) /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB, __TEXT=[0x000000012bd7f000 - 0x000000012d1fcfef) FBF8786F-92B9-31E3-8BCD-A82148338966 (1.137 - 137) /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB, __TEXT=[0x0000000122d78000 - 0x00000001241f5fd7) 7AE082E3-3BB7-3F64-A308-063E559DFC45 (1.143 - 143) /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB, __TEXT=[0x0000000119b8d000 - 0x000000011b02ef5f) 7AE082E3-3BB7-3F64-A308-063E559DFC45 (1.143 - 143) /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB, __TEXT=[0x0000000111497000 - 0x0000000112938f5f) 7AE082E3-3BB7-3F64-A308-063E559DFC45 (1.143 - 143) /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB, __TEXT=[0x0000000116680000 - 0x0000000117b21f5f) llvm-svn: 156201
* Fix the following error when importing crashlog.py from a Python interactive ↵Johnny Chen2012-05-031-1/+1
| | | | | | | | session: AttributeError: 'module' object has no attribute 'debugger' llvm-svn: 156115
* Fix AttributeError when using crashlog with verbose mode.Johnny Chen2012-05-031-1/+4
| | | | | | rdar://problem/11374653 llvm-svn: 156088
* Remove the "-x" from the finish-swig-Python-LLDB.sh shell options so it ↵Greg Clayton2012-04-251-6/+6
| | | | | | | | doesn't print out all of the commands when executing the shell script. Cleaned up the lldb.utils.symbolication, lldb.macosx.heap and lldb.macosx.crashlog. The lldb.macosx.heap can now build a dylib for the current triple into a temp directory and use it from there. llvm-svn: 155577
OpenPOWER on IntegriCloud