> On Feb 18, 2021, at 6:55 AM, Ivan Hernandez <ivanhernan...@google.com> wrote: > > Thank you for the very detailed explanation Greg!
Happy to help! I wrote the original DebugSymbols.framework when I worked at Apple many many years ago, so I am quite familiar with what it does. > Good to know about why DBGSpotlightPaths was not working and that > DBGSearchPaths is a possible option. I do expect this directory will get > quite large so it looks like DBGFileMappedPaths is the better alternative. Yeah, should be easy to have a python script that can take files from a directory and create any needed file mapped paths for you that is run each time you download some new symbols files. If you make a stand alone python file that does this kind of utility, you can check it into the lldb repository in lldb/examples/python Greg > > On Wed, Feb 17, 2021 at 6:53 PM Greg Clayton <clayb...@gmail.com > <mailto:clayb...@gmail.com>> wrote: > DBGSpotlightPaths is to limit spotlight searches to _only_ those directories, > but they must be valid locations that spotlight would normally index. If you > want to see if spotlight indexes a directory that contains a dSYM file, then > you can us "mdls": > > $ mdls a.out.dSYM > _kMDItemDisplayNameWithExtensions = "a.out.dSYM" > com_apple_xcode_dsym_paths = ( > "Contents/Resources/DWARF/a.out" > ) > com_apple_xcode_dsym_uuids = ( > "4B8A7479-4DF6-3828-AB99-3EF71E79B00E" > ) > > > if you see "com_apple_xcode_dsym_paths" and "com_apple_xcode_dsym_uuids", > then spotlight already indexes this directory and nothing should need to be > done. This won't work for locations that spotlight normally doesn't index > like "/tmp/*", "~/Library/Caches/*" and many more locations. This will just > let you know if spotlight is indexing files already. > > If you have a directory that contains dSYM files that you want to search, you > have a few options: > 1 - specify a directory that will be used for the current LLDB session only > 2 - add dsym files manually as you need them > 3 - specify a directory that will always be searched for all debug sessions > > > For solution #1 you can do this in LLDB with a setting: > > (lldb) settings set target.debug-file-search-paths /symbols/dir/number1 > [/symbols/dir/number2 ...] > (lldb) target create .... > > Any dSYM files that aren't found by spotlight, will fall back and look for > matching dsym files in the directories you specify for the current LLDB > session only. > > For solution #2, you can add dSYM files manually: > > (lldb) target create a.out > (lldb) target symbols add /path/to/libfoo.dSYM > > LLDB will find the executable that matches /path/to/libfoo.dSYM and add it > > For solution #3, you can modify the DebugSymbols.framework global defaults > which will help LLDB and any other Xcode tools (sample, Instruments, Xcode, > etc) to find your symbols: > > $ defaults write com.apple.DebugSymbols DBGSearchPaths -string > /single/path/to/search > $ defaults write com.apple.DebugSymbols DBGSearchPaths -array > /path/to/search1 /path/to/search2 > > The main issue with this settings, is each time you have a program that loads > DebugSymbols.framework (like LLDB), it will need to scan this entire > directory and find all matching dSYM files. If you end up placing a lot of > files in this directory, then it can become a performance cost. So this > method is not preferred due to its possible costs that depends on how many > dSYM files are in these directories. > > > A better solution that works well for solution #3 but has no cost associated > with it is to store you dSYM files in a directory that isn't indexed by > spotlight, then have a script that ends up chopping up your UUID into 4 byte > hex values as specified in File Mapped UUID Directories > <https://lldb.llvm.org/use/symbols.html#id3> page. This allows direct access > for looking up symbol files when needed and doesn't cost you much besides a > few stat() calls when you are looking for specific symbols. > > More comments inlined below! > > > > >> On Feb 11, 2021, at 8:29 AM, Ivan Hernandez via lldb-dev >> <lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>> wrote: >> >> Hello, >> >> I am in need of configuring dSYM lookups on macOS for a directory under >> ~/Library/Caches which is not indexed by Spotlight and does not seem to be >> picked up when adding my directory to DBGSpotlightPaths. > > Spotlight purposely doesn't index in ~/Library/Caches at all and > DBGSpotlightPaths setting for DebubSymbols.framework is used to only limit > spotlight's search to existing directories. The DBGSpotlightPaths setting is > typically used when you might have multiple external drives and you want to > limit spotlight searches to only a few root drives that contain symbols. It > won't cause a location that isn't indexed by Spotlight to suddenly become > indexed. > >> The Symbols on macOS <https://lldb.llvm.org/use/symbols.html> page includes >> "Explicit search paths" as a method of dSYM lookups but mentions no way of >> configuring it. I happened to come across this very old GDB release notes >> <https://opensource.apple.com/source/gdb/gdb-696/doc/ReleaseNotes.xml> page >> which mentions that DBGSearchPaths can be used to configure explicit search >> paths. > > Yes this is correct as I detailed above, but it comes with unacceptable costs > according to most people as each process has to scan these directories > recursively, so you want to make sure to specify a directory with only a few > files if you do end up using this method. If you specify an entire hard > drive, each time you start a process that uses DebugSymbols.framework, it > will recursively search the entire drive and all subdirectories for dSYM > files which can obviously slow things down! > > >> I can use DBGFileMappedPaths or DBGShellCommands but DBGSearchPaths seems to >> be working fine and looks like a much simpler approach if it is intended to >> be supported in the long term. > > It has been support for over 10 years, so yes, this is supported and will > continue to be, as long as you know the costs involved and are ok with that, > you can use this method. > > Greg Clayton >> >> Thanks, >> Ivan >> _______________________________________________ >> lldb-dev mailing list >> lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org> >> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev >> <https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev> >
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev