如何在 lldb 中显示完整的文件名

How to display full file name in lldb

本文关键字:文件名 显示 lldb      更新时间:2023-10-16

我对gdb的基本命令非常熟悉。不幸的是,苹果切换到了lldb,它具有完全不同的命令集,现在我需要学习一个新工具。

尝试调试程序时,我单步进入函数,但它没有显示函数所在的完整文件名。所以没有文件的路径。

是否有检索它的命令?

谢谢。

您可以执行image lookup -n <func-name>来获取文件名

(lldb) image lookup -n main
1 match found in /Users/ml9951/manticore/trunk/src/regression-tests/goals/seq-logging/a.out:
    Address: a.out[0x0000000100027670] (a.out.__TEXT.__text + 156144)
    Summary: a.out`main at main.c:90    <<--------
(lldb) 

它没有完整的路径,但希望这对某些人有所帮助。

(lldb) image lookup -v -a $pc
      Address: libjvm.so[0x0000000001a3c2c4] (libjvm.so.PT_LOAD[1]..text + 24588836)
      Summary: libjvm.so`SystemDictionaryShared::add_lambda_proxy_class(InstanceKlass*, InstanceKlass*, Symbol*, Symbol*, Symbol*, Method*, Symbol*, JavaThread*) + 356 at systemDictionaryShared.cpp:1642:3
       Module: file = "/home/foo/bar/jdk17u-git/build/linux-x86_64-server-fastdebug/images/jdk/lib/server/libjvm.so", arch = "x86_64"
  CompileUnit: id = {0x0000038b}, file = "/home/foo/bar/jdk17u-git/src/hotspot/share/classfile/systemDictionaryShared.cpp", language = "c++14"
     Function: id = {0x0d35d4df}, name = "SystemDictionaryShared::add_lambda_proxy_class(InstanceKlass*, InstanceKlass*, Symbol*, Symbol*, Symbol*, Method*, Symbol*, JavaThread*)", mangled = "_ZN22SystemDictionaryShared22add_lambda_proxy_classEP13InstanceKlassS1_P6SymbolS3_S3_P6MethodS3_P10JavaThread", range = [0x00007ffff74ff160-0x00007ffff74ff79d)
     FuncType: id = {0x0d35d4df}, byte-size = 0, decl = systemDictionaryShared.cpp:1631:6, compiler_type = "void (class InstanceKlass *, class InstanceKlass *, class Symbol *, class Symbol *, class Symbol *, class Method *, class Symbol *, class JavaThread *)"
       Blocks: id = {0x0d35d4df}, range = [0x7ffff74ff160-0x7ffff74ff79d)
    LineEntry: [0x00007ffff74ff2c4-0x00007ffff74ff2c9): /home/foo/bar/jdk17u-git/src/hotspot/share/classfile/systemDictionaryShared.cpp:1642:3
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       Symbol: id = {0x000055ba}, range = [0x00007ffff74ff160-0x00007ffff74ff79d), name="SystemDictionaryShared::add_lambda_proxy_class(InstanceKlass*, InstanceKlass*, Symbol*, Symbol*, Symbol*, Method*, Symbol*, JavaThread*)", mangled="_ZN22SystemDictionaryShared22add_lambda_proxy_classEP13InstanceKlassS1_P6SymbolS3_S3_P6MethodS3_P10JavaThread"
     Variable: id = {0x0d35d4fd}, name = "caller_ik", type = "InstanceKlass *", location = DW_OP_reg12 R12, decl = systemDictionaryShared.cpp:1631:68
     Variable: id = {0x0d35d512}, name = "lambda_ik", type = "InstanceKlass *", location = DW_OP_reg3 RBX, decl = systemDictionaryShared.cpp:1632:68
...