The LLDB command-line debugger provides underlying debugging services for development on all Apple platforms.

Posts under LLDB tag

144 Posts

Post

Replies

Boosts

Views

Activity

Debugging Big Sur kernel on inter-based macbook from Monterey on m1
HI devs, help me please, i want to debug Big Sur kernel on inter-based macbook from Monterey on m1, i have installed KDK_11.6.4_20G417.kdk in Monterey system on m1 macmini, then launch lldb, have created target and got this message : WARNING! Python version 3 is not supported for xnu lldbmacros. (lldb) target create /Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel warning: 'kernel' contains a debug script. To run this script in this debug session:   command script import "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/kernel.py" To run all discovered debug scripts in this session:   settings set target.load-script-from-symbol-file true Current executable set to '/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel' (x86_64). (lldb) settings set target.load-script-from-symbol-file true ############################## WARNING! Python version 3 is not supported for xnu lldbmacros. Please restart your debugging session with the following workaround defaults write com.apple.dt.lldb DefaultPythonVersion 2 ############################## Loading kernel debugging from /Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/kernel.py LLDB version lldb-1300.0.42.3 Swift version 5.5.2-dev settings set target.process.python-os-plugin-path "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/lldbmacros/core/operating_system.py" settings set target.trap-handler-names hndl_allintrs hndl_alltraps trap_from_kernel hndl_double_fault hndl_machine_check _fleh_prefabt _ExceptionVectorsBase _ExceptionVectorsTable _fleh_undef _fleh_dataabt _fleh_irq _fleh_decirq _fleh_fiq_generic _fleh_dec command script import "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/lldbmacros/xnu.py" error: module importing failed: Traceback (most recent call last):  File "<string>", line 1, in <module>  File "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/lldbmacros/xnu.py", line 123   print "Execution interrupted by user"      ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Execution interrupted by user")? settings set target.process.optimization-warnings false How can i solve this problem? lldb linked with python 3, but kdk uses python 2, also command line tools version 12.5.1 which uses python 2 i can not install on monterey too.
4
0
3.0k
Mar ’24
Xcode needs to support natvis files
Visual Studio, Stadia, and JetBrains are supporting natvis files, where Xcode is still stuck on lldb python files that even Xcode no longer uses to debug data structures. Apple has converted all of their scripts to native code, so there are no samples of how to write complex lldb visualizer rules. There is already an lldb-eval that can bring in natvis files, so something like this should be brought to Xcode. C++ packages like EASTL only ship with a natvis file, and it's far simpler to edit and write than the lldb rules and python scripting.
3
0
1.4k
Mar ’24
Xcode console swallows blank lines when printing string variables
After upgrading from Xcode 14.3 to Xcode 15.2, I am observing unexpected behaviour in Xcode when printing string variables to the console. Specifically, blank lines do not show up (they previously did, as expected, with Xcode 14.3). Steps to reproduce: Put this multiline (Swift) string literal in some Swift file (two lines with one blank line in between) let test = """ line1 line3 """ let Xcode hit a breakpoint in the file with the string print the string value to Xcode console: (lldb) po test "line1\n\nline3" print the same string, cast to NSString, to Xcode console: (lldb) po test as NSString line1 line3 Observed: The blank line is missing in the "po test as NSString" output Expected: There should be a blank line between line1 and line3 I'm running macOS 13.6 (22G120) and Xcode 15.2 (15C500b)
2
0
907
Feb ’24
Help needed with lldb - attach to Mac after a kernel panic
I am trying to debug a kernel panic in our kext. I can attach to the target Mac over ethernet if I: cause an NMI using add an IOPanic call to my kext and cause it to be executed use Dtrace to invoke a panic However if I reproduce the kernel panic which I am investigating, the Mac just restarts. How can I make the Mac wait for me to attach with lldb rather than restarting? My target configuration is: Mac is 2021 M1 Pro 14" MacBook Pro macOS 14.2 (23C64) Network: Apple Thunderbolt 3 <-> Thunderbolt 3 adapter + Apple Thunderbolt 2 to ethernet adapters Boot-args = "debug=0x44 wdt=-1 kdp_match_name=en8" (I have also tried debug=0x104C0C)
2
0
1.1k
Jan ’24
"devicectl device process launch --start-stopped" attach debugger from command line
Topic : Attaching debugger via lldb to remote process on tv device Current status I launch an app on a remote tv device that is paired to a macbook using the command xcrun devicectl device process launch --start-stopped -d XXXX-XXXXXX, com.metasample.SampleApp -j launch.json App is launched in stopped state and waiting for debugger to be attached to continue execution Using the XCode->Debug->Attach to Process, I am able to select the process and connect to the process and execute the app through the debugger. Expectation I would want to replace step 3 and use a command line instead to attach the debugger to the remote process instead of doing it via XCode.(the reason is to automate the execution without any manual intervention) I know the process id of the app on the remote tv device when i inspect the launch.json file that is created when the launch the app. eg pid 312 I also know the ip address of the device eg ip 192.168.178.29 However I do not know how to establish the debug session using lldb from command line. I launch lldb in the command line and execute these commands platform select remote-tvos target create /Users/works/apps/SampleApp-Payload/SampleApp.app/SampleApp gdb-remote 192.168.178.29: "what is the port?" - I do not know what port to connect to? Many Thanks for your suggestions and inputs on how to connect to the remote app via command line lldb.
0
2
2.7k
Jan ’24
xcode console - log folding / log line wrap
Hello, is there any way that I can automatically fold items in the console? I do log all API requests and responses, printed in a nice json to console. It works well, but having a lot of requests makes the console very big, and it kills readability, I have noticed that I can manually fold json printed in console with CMD+OPTION+Left shortcut. I am asking if that's possible to fold everything, or just display first lines of the console. So I can see more entries easier, and if I need I can unfold, or disable Line Wrap, to see details. I am attaching the photo of how code folds works there. It's all good, but I need to do it one by one, which is bad. If I could select everything and auto-fold, or It has the line wrap disabled. I
1
1
1.5k
Jan ’24
Xcode 15.1:error: Internal error [IRForTarget]: Couldn't change a static reference to an Objective-C selector to a dynamic reference
When po an NSObject variable in lldb in Xcode 15.1,an error occurs,this error description is "error: Internal error [IRForTarget]: Couldn't change a static reference to an Objective-C selector to a dynamic reference" Has anyone encountered this situation? How can i fix this?
1
0
1.4k
Dec ’23
mac-to-mac remote debugging
There have been occasional questions about remote debugging. Unfortunately I see a couple of them which were reasonable basic questions got no answer at all. I will try this again. A couple questions had some mention of lldb server. In some cases clearly the people asking the questions already knew a bit about remote debugging. Yet I can find no documentation about it.Does XCode or other tools that will work with XCode support debugging over the internet? If so what are the reqirements re XCode version and macOS version, whether the client and server can have unmatched versions, etc.?My immediate need (without extra steps) is to debug a process running on Sierra (no XCode installed yet) from a development system running XCode 7.3.1 under El Capitan.The need for remote debugging is to be able to diagnose crashes that don't happen on my development systems. There have also been questions concerning crash logs, but crash logs are of limited use unless the crash can be opened into a debugger with full ability to examine the stack and local variables.Thanks in advance!
4
1
5.3k
Dec ’23
Xcode 15.1 is adding extra lines in between print() statements, sometimes
Yesterday, my code ran just fine under the previous Xcode version. Today, some print() statements seem to come with extra lines. I know it sounds stupid, but my code did not change in the meantime. It doesn't appear to come from anything I control, almost like some Apple code emits an extra line feed somewhere. It's just a Swift Mac App I built to make my digital art; otherwise, nothing else is incorrect, just these odd lines. It's not as simple as just making a test case with a few print("XXX") statements, it seems to require other code to run in between calls to print. Most of my app is using CoreGraphics. It has no UI. It's like when you see spurious Apple debugging info in the console sometimes, but it's only a blank line this time. It's not a big issue, just annoying.
4
1
1.7k
Dec ’23
LLDB always exits abnormally on local code
I am building simple command-line programs in C. When I run LLDB on the command line on any such executable , even though I set a breakpoint in main, LLDB always runs to termination and reports an error. Below is an example: ~ % clang -Wall -g prog.c -o prog aviram@csaamdS278stma ~ % lldb prog (lldb) target create "prog" Current executable set to '/Users/aviram/prog' (x86_64). (lldb) breakpoint set --name main Breakpoint 1: where = progmain + 15 at prog.c:73:21, address = 0x0000000100003ebf (lldb) run Process 99926 launched: '/Users/aviram/prog' (x86_64) Process 99926 exited with status = -1 (0xffffffff) lost connection (lldb) ` Note that it says "lost connection" even though I am _ remote debugging. This happens with every executable I build._ Details: 2019 MacBook Pro (x86_64, Sonoma); Apple Clang 12.0.0 (downloaded with Xcode 15.0.1). Why is this happening and what can I do to debug my program (for real) using LLDB from the command line? Thanks.
3
0
1.2k
Dec ’23
Confused about LLDB's "p" and "expr" commands
As I was watching WWDC19 Session: "LLDB: beyond "po" " I got confused about "p" command. In the session there was a following example to show how "p" command works: // Struct for demonstration purposes struct Trip { var name: String var destinations: [String] let cruise = Trip ( name: "Mediterranean Cruise" destinations: ["Sorrento", "Capri", "Taormina"]) Using "p" to get info about cruise instance: (lldb) p cruise (Travel.Trip) $R0 = { name = "Mediterranean Cruise" destinations = 3 values { [0] = "Sorrento" [1] = "Capri" [2] = "Taormina" } } I was following along and wrote the same code. But the output from LLDB turned out to be different: (lldb) p cruise (LLDB_Apple_Session_FollowAlong.Trip) { name = "Mediterranean Cruise" destinations = 3 values { [0] = "Sorrento" [1] = "Capri" [2] = "Taormina" } } As you can see LLDB didn't create a global variable R0 which I could later use in my debugging session and that seemed strange to me. Then the presenter said the following: "p" is just an alias for the "expression" command. So, I tried to use the "expr" command to see if they're actually the same and they turned out to be different commands. The output I got from "expr" was the one I expected from "p": (lldb) expr cruise (LLDB_Apple_Session_FollowAlong.Trip) $R0 = { name = "Mediterranean Cruise" destinations = 3 values { [0] = "Sorrento" [1] = "Capri" [2] = "Taormina" } } Finally, my question is: Am I wrong somewhere or did something change in LLDB regarding "p" and "expr" commands and if so, where could I get more information about the changes?
2
0
1.3k
Dec ’23
LLDB doesn’t stop on SIGABRT (assert) with x86 executable on Apple ARM
Hello. I am currently developing a C++ application for x86_64 using XCode, and I am experiencing the same problem as described in the following link. https://discourse.llvm.org/t/lldb-doesnt-stop-on-sigabrt-assert-with-x86-executable-on-apple-arm/69749/1 Due to this bug, when the application crashes, it is difficult to tell which source code caused the crash, and this is reducing our development efficiency. How can this be fixed? Thank you in advance for your help.
2
0
1.1k
Nov ’23
Create a suspended thread
Hello, I have tried to create a thread with thread_create_running API. It works but i would like to suspend this thread. I can call thread_suspend, but my thread has already been start before i call this API. Is there a way to create a thread without running it automaticaly. Thanks
1
0
808
Nov ’23
Debug a process by hand from a c program on an Apple Silicon CPU
Hello, My purpose is to understand how macOS works. Here is what i've done: I have wrote a c program on a M1 CPU with this lines: printf("Before breakpoint\n"); asm volatile("brk #0"); printf("After breakpoint\n"); When i run this program with lldb, a breakpoint is hit on the second line. So i suppose lldb is writing a "brk #0" instruction when we put a breakpoint manually. I can't continue to next line with lldb "c" command. PC stays on the brk instruction. I need to manually set PC to next instruction in lldb. Now, what i want to do is to create my own debugger. (I want to understand how lldb works). I have managed to ptrace the target program and i was able to catch an event with waitpid when "brk #0" is hit. But i don't know how i can increase PC value and continue execution because i can't do this on Silicon CPU: ptrace(PTRACE_GETREGS, child_pid, NULL, &amp;regs); ptrace(PTRACE_SETREGS, child_pid, NULL, &amp;regs); kill(child_pid, SIGCONT); So my question is: How does lldb managed to change ARM64 registers of a remote process ? Thanks
2
0
1.3k
Nov ’23
XCode 15.0 debugging issue - variables view shows empty containers
Hello, I am facing an issue when debugging cpp code through the XCode after updating to XCode 15.0. During debugging, in a variables watch view, it is shown for the collections (let's take std::vector as an example) that its size is 0 even if it is not. If I add it as an expression to watch, it is fine. Also if I print it in lldb console, it is also fine. Any thoughts on this?
0
0
926
Oct ’23
Xcode 14.2+: lldb-rpc-server has crashed.
I don't know when this started but it's basically brought my development to a standstill. I know it worked fine in macOS 13.2.1, though I didn't try Xcode 14.3 RC 2 in 13.2.1. Basically, Xcode 14.3 RC 2 (14E222b) and also Xcode 14.2 (14C18) (which had been stable up till now) are both unable to launch the app in debug mode. As soon as the launched/debugged app finally starts, the following is printed to Xcode's console: Message from debugger: The LLDB RPC server has crashed. You may need to manually terminate your process. The crash log is located in ~/Library/Logs/DiagnosticReports and has a prefix 'lldb-rpc-server'. Please file a bug and attach the most recent crash log. The crash log is always the same. The full log is at https://gist.github.com/NSGod/5e194900bd6f5a9ac9328b936a26037e. There seems to be an infinite loop in thread 6: Thread 6 Crashed:: &lt;lldb.process.internal-state(pid=30877)&gt; 0 LLDB 0x12030cfb4 ParseTrieEntries(....) + 20 1 LLDB 0x12030d653 ParseTrieEntries(....) + 1715 After I initially encountered this issue in Xcode 14.3 RC 2 (14E222b) with my business project, I tried creating a new Cocoa app using Xibs and Objective-C and still encountered the problem in that project. I've cleaned out the build folders, etc. but that made no difference. I opened both my business project and a new project in Xcode 14.2 (14C18) but saw no difference (it still crashes). I also tried in a new user account using both versions of Xcode but they both crash. Could having Python 3.10 and 3.11 installed through MacPorts anything to do with it (I noticed Python 3.9 in the binary images, but I'm not sure). Any ideas?
11
2
6.3k
Oct ’23
Debugging Big Sur kernel on inter-based macbook from Monterey on m1
HI devs, help me please, i want to debug Big Sur kernel on inter-based macbook from Monterey on m1, i have installed KDK_11.6.4_20G417.kdk in Monterey system on m1 macmini, then launch lldb, have created target and got this message : WARNING! Python version 3 is not supported for xnu lldbmacros. (lldb) target create /Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel warning: 'kernel' contains a debug script. To run this script in this debug session:   command script import "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/kernel.py" To run all discovered debug scripts in this session:   settings set target.load-script-from-symbol-file true Current executable set to '/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel' (x86_64). (lldb) settings set target.load-script-from-symbol-file true ############################## WARNING! Python version 3 is not supported for xnu lldbmacros. Please restart your debugging session with the following workaround defaults write com.apple.dt.lldb DefaultPythonVersion 2 ############################## Loading kernel debugging from /Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/kernel.py LLDB version lldb-1300.0.42.3 Swift version 5.5.2-dev settings set target.process.python-os-plugin-path "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/lldbmacros/core/operating_system.py" settings set target.trap-handler-names hndl_allintrs hndl_alltraps trap_from_kernel hndl_double_fault hndl_machine_check _fleh_prefabt _ExceptionVectorsBase _ExceptionVectorsTable _fleh_undef _fleh_dataabt _fleh_irq _fleh_decirq _fleh_fiq_generic _fleh_dec command script import "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/lldbmacros/xnu.py" error: module importing failed: Traceback (most recent call last):  File "<string>", line 1, in <module>  File "/Library/Developer/KDKs/KDK_11.6.4_20G417.kdk/System/Library/Kernels/kernel.dSYM/Contents/Resources/Python/lldbmacros/xnu.py", line 123   print "Execution interrupted by user"      ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Execution interrupted by user")? settings set target.process.optimization-warnings false How can i solve this problem? lldb linked with python 3, but kdk uses python 2, also command line tools version 12.5.1 which uses python 2 i can not install on monterey too.
Replies
4
Boosts
0
Views
3.0k
Activity
Mar ’24
Xcode needs to support natvis files
Visual Studio, Stadia, and JetBrains are supporting natvis files, where Xcode is still stuck on lldb python files that even Xcode no longer uses to debug data structures. Apple has converted all of their scripts to native code, so there are no samples of how to write complex lldb visualizer rules. There is already an lldb-eval that can bring in natvis files, so something like this should be brought to Xcode. C++ packages like EASTL only ship with a natvis file, and it's far simpler to edit and write than the lldb rules and python scripting.
Replies
3
Boosts
0
Views
1.4k
Activity
Mar ’24
Xcode console swallows blank lines when printing string variables
After upgrading from Xcode 14.3 to Xcode 15.2, I am observing unexpected behaviour in Xcode when printing string variables to the console. Specifically, blank lines do not show up (they previously did, as expected, with Xcode 14.3). Steps to reproduce: Put this multiline (Swift) string literal in some Swift file (two lines with one blank line in between) let test = """ line1 line3 """ let Xcode hit a breakpoint in the file with the string print the string value to Xcode console: (lldb) po test "line1\n\nline3" print the same string, cast to NSString, to Xcode console: (lldb) po test as NSString line1 line3 Observed: The blank line is missing in the "po test as NSString" output Expected: There should be a blank line between line1 and line3 I'm running macOS 13.6 (22G120) and Xcode 15.2 (15C500b)
Replies
2
Boosts
0
Views
907
Activity
Feb ’24
Xcode15.2 LLDB 太慢了,简直无法工作
Xcode15.2 LLDB 太慢了,简直无法工作,好几分钟才断点出变量传,然后断点无法跳出继续执行。Xcode14.1则不会有这些问题,望修复。
Replies
2
Boosts
1
Views
1.3k
Activity
Feb ’24
Help needed with lldb - attach to Mac after a kernel panic
I am trying to debug a kernel panic in our kext. I can attach to the target Mac over ethernet if I: cause an NMI using add an IOPanic call to my kext and cause it to be executed use Dtrace to invoke a panic However if I reproduce the kernel panic which I am investigating, the Mac just restarts. How can I make the Mac wait for me to attach with lldb rather than restarting? My target configuration is: Mac is 2021 M1 Pro 14" MacBook Pro macOS 14.2 (23C64) Network: Apple Thunderbolt 3 <-> Thunderbolt 3 adapter + Apple Thunderbolt 2 to ethernet adapters Boot-args = "debug=0x44 wdt=-1 kdp_match_name=en8" (I have also tried debug=0x104C0C)
Replies
2
Boosts
0
Views
1.1k
Activity
Jan ’24
"devicectl device process launch --start-stopped" attach debugger from command line
Topic : Attaching debugger via lldb to remote process on tv device Current status I launch an app on a remote tv device that is paired to a macbook using the command xcrun devicectl device process launch --start-stopped -d XXXX-XXXXXX, com.metasample.SampleApp -j launch.json App is launched in stopped state and waiting for debugger to be attached to continue execution Using the XCode->Debug->Attach to Process, I am able to select the process and connect to the process and execute the app through the debugger. Expectation I would want to replace step 3 and use a command line instead to attach the debugger to the remote process instead of doing it via XCode.(the reason is to automate the execution without any manual intervention) I know the process id of the app on the remote tv device when i inspect the launch.json file that is created when the launch the app. eg pid 312 I also know the ip address of the device eg ip 192.168.178.29 However I do not know how to establish the debug session using lldb from command line. I launch lldb in the command line and execute these commands platform select remote-tvos target create /Users/works/apps/SampleApp-Payload/SampleApp.app/SampleApp gdb-remote 192.168.178.29: "what is the port?" - I do not know what port to connect to? Many Thanks for your suggestions and inputs on how to connect to the remote app via command line lldb.
Replies
0
Boosts
2
Views
2.7k
Activity
Jan ’24
xcode console - log folding / log line wrap
Hello, is there any way that I can automatically fold items in the console? I do log all API requests and responses, printed in a nice json to console. It works well, but having a lot of requests makes the console very big, and it kills readability, I have noticed that I can manually fold json printed in console with CMD+OPTION+Left shortcut. I am asking if that's possible to fold everything, or just display first lines of the console. So I can see more entries easier, and if I need I can unfold, or disable Line Wrap, to see details. I am attaching the photo of how code folds works there. It's all good, but I need to do it one by one, which is bad. If I could select everything and auto-fold, or It has the line wrap disabled. I
Replies
1
Boosts
1
Views
1.5k
Activity
Jan ’24
Xcode 15.1:error: Internal error [IRForTarget]: Couldn't change a static reference to an Objective-C selector to a dynamic reference
When po an NSObject variable in lldb in Xcode 15.1,an error occurs,this error description is "error: Internal error [IRForTarget]: Couldn't change a static reference to an Objective-C selector to a dynamic reference" Has anyone encountered this situation? How can i fix this?
Replies
1
Boosts
0
Views
1.4k
Activity
Dec ’23
mac-to-mac remote debugging
There have been occasional questions about remote debugging. Unfortunately I see a couple of them which were reasonable basic questions got no answer at all. I will try this again. A couple questions had some mention of lldb server. In some cases clearly the people asking the questions already knew a bit about remote debugging. Yet I can find no documentation about it.Does XCode or other tools that will work with XCode support debugging over the internet? If so what are the reqirements re XCode version and macOS version, whether the client and server can have unmatched versions, etc.?My immediate need (without extra steps) is to debug a process running on Sierra (no XCode installed yet) from a development system running XCode 7.3.1 under El Capitan.The need for remote debugging is to be able to diagnose crashes that don't happen on my development systems. There have also been questions concerning crash logs, but crash logs are of limited use unless the crash can be opened into a debugger with full ability to examine the stack and local variables.Thanks in advance!
Replies
4
Boosts
1
Views
5.3k
Activity
Dec ’23
Xcode 15.1 is adding extra lines in between print() statements, sometimes
Yesterday, my code ran just fine under the previous Xcode version. Today, some print() statements seem to come with extra lines. I know it sounds stupid, but my code did not change in the meantime. It doesn't appear to come from anything I control, almost like some Apple code emits an extra line feed somewhere. It's just a Swift Mac App I built to make my digital art; otherwise, nothing else is incorrect, just these odd lines. It's not as simple as just making a test case with a few print("XXX") statements, it seems to require other code to run in between calls to print. Most of my app is using CoreGraphics. It has no UI. It's like when you see spurious Apple debugging info in the console sometimes, but it's only a blank line this time. It's not a big issue, just annoying.
Replies
4
Boosts
1
Views
1.7k
Activity
Dec ’23
Debugging an Authorization Plug-in remotely via SSH
In an old document from Apple(Debugging An Authorization Plug-In With Xcode), a method was taught to debug plugins on the device remotely, but I can't find this feature in the new Xcode version. Does it exist In the new Xcodes? https://developer.apple.com/library/archive/technotes/tn2108/_index.html#//apple_ref/doc/uid/DTS40007965-CH1-SECCONFIGXCODE
Replies
1
Boosts
0
Views
872
Activity
Dec ’23
Is there a way to start a debugserver with devicectl on an iOS 17+ device?
xcrun devicectl has support for installing and launching apps but does it support launching a debugserver? I've tried xcrun devicectl device process launch /usr/libexec/debugserver to no avail. Is there something I'm missing or perhaps another tool that would let me start a debugserver from command line?
Replies
3
Boosts
4
Views
2.1k
Activity
Dec ’23
LLDB always exits abnormally on local code
I am building simple command-line programs in C. When I run LLDB on the command line on any such executable , even though I set a breakpoint in main, LLDB always runs to termination and reports an error. Below is an example: ~ % clang -Wall -g prog.c -o prog aviram@csaamdS278stma ~ % lldb prog (lldb) target create "prog" Current executable set to '/Users/aviram/prog' (x86_64). (lldb) breakpoint set --name main Breakpoint 1: where = progmain + 15 at prog.c:73:21, address = 0x0000000100003ebf (lldb) run Process 99926 launched: '/Users/aviram/prog' (x86_64) Process 99926 exited with status = -1 (0xffffffff) lost connection (lldb) ` Note that it says "lost connection" even though I am _ remote debugging. This happens with every executable I build._ Details: 2019 MacBook Pro (x86_64, Sonoma); Apple Clang 12.0.0 (downloaded with Xcode 15.0.1). Why is this happening and what can I do to debug my program (for real) using LLDB from the command line? Thanks.
Replies
3
Boosts
0
Views
1.2k
Activity
Dec ’23
Confused about LLDB's "p" and "expr" commands
As I was watching WWDC19 Session: "LLDB: beyond "po" " I got confused about "p" command. In the session there was a following example to show how "p" command works: // Struct for demonstration purposes struct Trip { var name: String var destinations: [String] let cruise = Trip ( name: "Mediterranean Cruise" destinations: ["Sorrento", "Capri", "Taormina"]) Using "p" to get info about cruise instance: (lldb) p cruise (Travel.Trip) $R0 = { name = "Mediterranean Cruise" destinations = 3 values { [0] = "Sorrento" [1] = "Capri" [2] = "Taormina" } } I was following along and wrote the same code. But the output from LLDB turned out to be different: (lldb) p cruise (LLDB_Apple_Session_FollowAlong.Trip) { name = "Mediterranean Cruise" destinations = 3 values { [0] = "Sorrento" [1] = "Capri" [2] = "Taormina" } } As you can see LLDB didn't create a global variable R0 which I could later use in my debugging session and that seemed strange to me. Then the presenter said the following: "p" is just an alias for the "expression" command. So, I tried to use the "expr" command to see if they're actually the same and they turned out to be different commands. The output I got from "expr" was the one I expected from "p": (lldb) expr cruise (LLDB_Apple_Session_FollowAlong.Trip) $R0 = { name = "Mediterranean Cruise" destinations = 3 values { [0] = "Sorrento" [1] = "Capri" [2] = "Taormina" } } Finally, my question is: Am I wrong somewhere or did something change in LLDB regarding "p" and "expr" commands and if so, where could I get more information about the changes?
Replies
2
Boosts
0
Views
1.3k
Activity
Dec ’23
LLDB doesn’t stop on SIGABRT (assert) with x86 executable on Apple ARM
Hello. I am currently developing a C++ application for x86_64 using XCode, and I am experiencing the same problem as described in the following link. https://discourse.llvm.org/t/lldb-doesnt-stop-on-sigabrt-assert-with-x86-executable-on-apple-arm/69749/1 Due to this bug, when the application crashes, it is difficult to tell which source code caused the crash, and this is reducing our development efficiency. How can this be fixed? Thank you in advance for your help.
Replies
2
Boosts
0
Views
1.1k
Activity
Nov ’23
Create a suspended thread
Hello, I have tried to create a thread with thread_create_running API. It works but i would like to suspend this thread. I can call thread_suspend, but my thread has already been start before i call this API. Is there a way to create a thread without running it automaticaly. Thanks
Replies
1
Boosts
0
Views
808
Activity
Nov ’23
Debug a process by hand from a c program on an Apple Silicon CPU
Hello, My purpose is to understand how macOS works. Here is what i've done: I have wrote a c program on a M1 CPU with this lines: printf("Before breakpoint\n"); asm volatile("brk #0"); printf("After breakpoint\n"); When i run this program with lldb, a breakpoint is hit on the second line. So i suppose lldb is writing a "brk #0" instruction when we put a breakpoint manually. I can't continue to next line with lldb "c" command. PC stays on the brk instruction. I need to manually set PC to next instruction in lldb. Now, what i want to do is to create my own debugger. (I want to understand how lldb works). I have managed to ptrace the target program and i was able to catch an event with waitpid when "brk #0" is hit. But i don't know how i can increase PC value and continue execution because i can't do this on Silicon CPU: ptrace(PTRACE_GETREGS, child_pid, NULL, &amp;regs); ptrace(PTRACE_SETREGS, child_pid, NULL, &amp;regs); kill(child_pid, SIGCONT); So my question is: How does lldb managed to change ARM64 registers of a remote process ? Thanks
Replies
2
Boosts
0
Views
1.3k
Activity
Nov ’23
XCode 15.0 debugging issue - variables view shows empty containers
Hello, I am facing an issue when debugging cpp code through the XCode after updating to XCode 15.0. During debugging, in a variables watch view, it is shown for the collections (let's take std::vector as an example) that its size is 0 even if it is not. If I add it as an expression to watch, it is fine. Also if I print it in lldb console, it is also fine. Any thoughts on this?
Replies
0
Boosts
0
Views
926
Activity
Oct ’23
Xcode 14.2+: lldb-rpc-server has crashed.
I don't know when this started but it's basically brought my development to a standstill. I know it worked fine in macOS 13.2.1, though I didn't try Xcode 14.3 RC 2 in 13.2.1. Basically, Xcode 14.3 RC 2 (14E222b) and also Xcode 14.2 (14C18) (which had been stable up till now) are both unable to launch the app in debug mode. As soon as the launched/debugged app finally starts, the following is printed to Xcode's console: Message from debugger: The LLDB RPC server has crashed. You may need to manually terminate your process. The crash log is located in ~/Library/Logs/DiagnosticReports and has a prefix 'lldb-rpc-server'. Please file a bug and attach the most recent crash log. The crash log is always the same. The full log is at https://gist.github.com/NSGod/5e194900bd6f5a9ac9328b936a26037e. There seems to be an infinite loop in thread 6: Thread 6 Crashed:: &lt;lldb.process.internal-state(pid=30877)&gt; 0 LLDB 0x12030cfb4 ParseTrieEntries(....) + 20 1 LLDB 0x12030d653 ParseTrieEntries(....) + 1715 After I initially encountered this issue in Xcode 14.3 RC 2 (14E222b) with my business project, I tried creating a new Cocoa app using Xibs and Objective-C and still encountered the problem in that project. I've cleaned out the build folders, etc. but that made no difference. I opened both my business project and a new project in Xcode 14.2 (14C18) but saw no difference (it still crashes). I also tried in a new user account using both versions of Xcode but they both crash. Could having Python 3.10 and 3.11 installed through MacPorts anything to do with it (I noticed Python 3.9 in the binary images, but I'm not sure). Any ideas?
Replies
11
Boosts
2
Views
6.3k
Activity
Oct ’23
Parse Mach-O debug map
How are debug maps saved in Mach-O files? I'm trying to essentially recreate the output of dsymutil -dump-debug-map.
Replies
4
Boosts
0
Views
1.1k
Activity
Sep ’23