Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

launch a lldb session on jvm #3796

Open
marienmare opened this issue Dec 22, 2021 · 8 comments
Open

launch a lldb session on jvm #3796

marienmare opened this issue Dec 22, 2021 · 8 comments
Labels

Comments

@marienmare
Copy link

image

image

environment : m1 mac

question :
I have lldb on my mac but ghidra debugger can't connect to lldb, i spent a lot of time try on fix problem...
someone have solution? how i can run debugger with lldb on m1 mac

@d-millar
Copy link
Collaborator

@brucejhju Have run the debugger an m1 mac, so this is definitely possible, but not sure I have enough context from your screen shot to diagnose the problem. If you can send along any of the error messages in the debugger console window or use ghidraDebug (in support) versus ghidraRun, that might help.

A couple of things to suggest: have you read the instruction in Ghidra/Debug/Debugger-swig-lldb? they might help, although frankly i think you’d see a different error. if you are debugging a native (aarch64) executable, you need to be running as root or have debug privileges. the version of liblldb.dylib has to be roughly co-located with the lldb-server executable, but, for the system version, this should be true, as well. it might be good to add its location to LD_LIBRARY_PATH too.

am unfortunately not near my computer, but, if you can get us a little more info, i can probably make a better guess.

@marienmare
Copy link
Author

@d-millar Thank you for help millar.

First, I have installed ghidra for homebrew and lldb is system version(mac default: i think it's included xcode-command-line-tools) currently.

Second, I already had read and try the instruction in Ghidra/Debug/Debugger-swig-lldb.
for details, i had install llvm. first time tried step(2a) but doesn't work for me. So i installed llvm for brew and configuration to environment variable.

that's evidence with below picture about environment var.
image

but, step(4) doesn't tried.

Last, I found ghidraLog about error. hope to it will be helpful.


2021-12-22 23:51:13 ERROR (LldbManagerImpl) java.library.path => /Users/bruce/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.  
2021-12-22 23:51:13 ERROR (LldbManagerImpl) liblldb not found - add relevant java.library.path to support/launch.properties  
2021-12-22 23:51:13 ERROR (LldbManagerImpl) java.library.path => /Users/bruce/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.  
2021-12-22 23:51:13 ERROR (LldbManagerImpl) liblldb-java not found - add relevant java.library.path to support/launch.properties  
2021-12-22 23:51:13 ERROR (BackgroundCommandTask) Command Failure: An unexpected error occurred while processing the command: Debug test.out in LLDB locally IN-VM java.lang.UnsatisfiedLinkError: 'int SWIG.lldbJNI.SBProcess_eBroadcastBitStateChanged_get()'
	at SWIG.lldbJNI.SBProcess_eBroadcastBitStateChanged_get(Native Method)
	at SWIG.SBProcess.<clinit>(SBProcess.java:354)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:375)
	at jdk.proxy2/jdk.proxy2.$Proxy49.<clinit>(Unknown Source)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1053)
	at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1039)
	at ghidra.util.datastruct.ListenerMap.<init>(ListenerMap.java:212)
	at ghidra.util.datastruct.ListenerSet$1.<init>(ListenerSet.java:59)
	at ghidra.util.datastruct.ListenerSet.<init>(ListenerSet.java:59)
	at ghidra.util.datastruct.ListenerSet.<init>(ListenerSet.java:49)
	at agent.lldb.manager.impl.LldbManagerImpl.<init>(LldbManagerImpl.java:96)
	at agent.lldb.manager.LldbManager.newInstance(LldbManager.java:58)
	at agent.lldb.model.impl.LldbModelImpl.<init>(LldbModelImpl.java:70)
	at agent.lldb.LldbInJvmDebuggerModelFactory.build(LldbInJvmDebuggerModelFactory.java:41)
	at ghidra.app.plugin.core.debug.service.model.launch.AbstractDebuggerProgramLaunchOffer.connect(AbstractDebuggerProgramLaunchOffer.java:265)
	at ghidra.app.plugin.core.debug.service.model.launch.AbstractDebuggerProgramLaunchOffer.launchProgram(AbstractDebuggerProgramLaunchOffer.java:275)
	at ghidra.app.plugin.core.debug.service.model.DebuggerModelServiceProxyPlugin.lambda$debugProgram$6(DebuggerModelServiceProxyPlugin.java:342)
	at ghidra.app.plugin.core.debug.utils.BackgroundUtils$AsyncBackgroundCommand.applyTo(BackgroundUtils.java:54)
	at ghidra.framework.plugintool.mgr.BackgroundCommandTask.run(BackgroundCommandTask.java:102)
	at ghidra.framework.plugintool.mgr.ToolTaskManager.run(ToolTaskManager.java:315)
	at java.base/java.lang.Thread.run(Thread.java:833)
 
2021-12-22 23:51:13 ERROR (ToolTaskManager) Debug test.out in LLDB locally IN-VM Failed: Unspecified error occurred.  
2021-12-22 23:51:13 DEBUG (ToolTaskManager) Wed Dec 22 23:51:13 KST 2021 Background processing complete (0.138 secs)  
2021-12-22 23:53:13 INFO  (RecoveryMgr) Wed Dec 22 23:53:13 KST 2021 Recovery snapshot created: /Users/bruce/src/rev/ghidra.rep/idata/00/~00000000.db/snapshotA.grf  
2021-12-22 23:53:38 ERROR (SwingExceptionHandler) Error: Uncaught Exception! 
NoClassDefFoundError - Could not initialize class jdk.proxy2.$Proxy49 java.lang.NoClassDefFoundError: Could not initialize class jdk.proxy2.$Proxy49
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1053)
	at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1039)
	at ghidra.util.datastruct.ListenerMap.<init>(ListenerMap.java:212)
	at ghidra.util.datastruct.ListenerSet$1.<init>(ListenerSet.java:59)
	at ghidra.util.datastruct.ListenerSet.<init>(ListenerSet.java:59)
	at ghidra.util.datastruct.ListenerSet.<init>(ListenerSet.java:49)
	at agent.lldb.manager.impl.LldbManagerImpl.<init>(LldbManagerImpl.java:96)
	at agent.lldb.manager.LldbManager.newInstance(LldbManager.java:58)
	at agent.lldb.model.impl.LldbModelImpl.<init>(LldbModelImpl.java:70)
	at agent.lldb.LldbInJvmDebuggerModelFactory.build(LldbInJvmDebuggerModelFactory.java:41)
	at ghidra.app.plugin.core.debug.service.model.DebuggerConnectDialog.connect(DebuggerConnectDialog.java:242)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
	at java.desktop/java.awt.Component.show(Component.java:1728)
	at java.desktop/java.awt.Component.setVisible(Component.java:1675)
	at java.desktop/java.awt.Window.setVisible(Window.java:1036)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1016)
	at docking.DockingDialog.setVisible(DockingDialog.java:353)
	at docking.DockingWindowManager.lambda$doShowDialog$6(DockingWindowManager.java:1751)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at docking.DockingWindowManager.doShowDialog(DockingWindowManager.java:1755)
	at docking.DockingWindowManager.showDialog(DockingWindowManager.java:1704)
	at docking.AbstractDockingTool.showDialog(AbstractDockingTool.java:154)
	at ghidra.app.plugin.core.debug.service.model.DebuggerModelServicePlugin.doShowConnectDialog(DebuggerModelServicePlugin.java:679)
	at ghidra.app.plugin.core.debug.service.model.DebuggerModelServiceProxyPlugin.showConnectDialog(DebuggerModelServiceProxyPlugin.java:270)
	at ghidra.app.services.DebuggerModelService.showConnectDialog(DebuggerModelService.java:356)
	at ghidra.app.plugin.core.debug.gui.target.DebuggerTargetsProvider$ConnectAction.actionPerformed(DebuggerTargetsProvider.java:110)
	at docking.menu.ToolBarItemManager.lambda$actionPerformed$0(ToolBarItemManager.java:128)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
 

@d-millar
Copy link
Collaborator

That helps! Given you are using version 13, you should not need to do step 2. For step 3, LLVM_BUILD should be set up a level, I think. The code is looking for bin/liblldb.dylib, so you may need to add a soft link. LLVM_HOME should have an “include” directory in it. If /opt/homebrew/Cellar/llvm/include doesn’t exist, you may need to point LLVM_HOME at the download source.

Once you have both liblldb.dylib and liblldb-java.dylib, you will need to do step 4, so Ghidra knows where they are. Right now, Ghidra can’t find either (per your error log). Step 4 should fix that, once you have both.

@marienmare
Copy link
Author

@d-millar

  1. reinstall llvm for homebrew
  2. lidlldb.dylib link to llvm/bin/llblldb
    image
  3. environment variable set in .zshrc
    image
  4. ????? I can't find liblldb.dylib
    image

anyway, i just skiped Step 4 and try ghidraRun. and met something new error

'int SWIG.lldbJNI.SBProcess_eBroadcastBitStateChanged_get()'
java.lang.UnsatisfiedLinkError: 'int SWIG.lldbJNI.SBProcess_eBroadcastBitStateChanged_get()'
	at SWIG.lldbJNI.SBProcess_eBroadcastBitStateChanged_get(Native Method)
	at SWIG.SBProcess.<clinit>(SBProcess.java:354)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:375)
	at jdk.proxy2/jdk.proxy2.$Proxy48.<clinit>(Unknown Source)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1053)
	at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1039)
	at ghidra.util.datastruct.ListenerMap.<init>(ListenerMap.java:212)
	at ghidra.util.datastruct.ListenerSet$1.<init>(ListenerSet.java:59)
	at ghidra.util.datastruct.ListenerSet.<init>(ListenerSet.java:59)
	at ghidra.util.datastruct.ListenerSet.<init>(ListenerSet.java:49)
	at agent.lldb.manager.impl.LldbManagerImpl.<init>(LldbManagerImpl.java:96)
	at agent.lldb.manager.LldbManager.newInstance(LldbManager.java:58)
	at agent.lldb.model.impl.LldbModelImpl.<init>(LldbModelImpl.java:70)
	at agent.lldb.LldbInJvmDebuggerModelFactory.build(LldbInJvmDebuggerModelFactory.java:41)
	at ghidra.app.plugin.core.debug.service.model.DebuggerConnectDialog.connect(DebuggerConnectDialog.java:242)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
	at java.desktop/java.awt.Component.show(Component.java:1728)
	at java.desktop/java.awt.Component.setVisible(Component.java:1675)
	at java.desktop/java.awt.Window.setVisible(Window.java:1036)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1016)
	at docking.DockingDialog.setVisible(DockingDialog.java:353)
	at docking.DockingWindowManager.lambda$doShowDialog$6(DockingWindowManager.java:1751)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at docking.DockingWindowManager.doShowDialog(DockingWindowManager.java:1755)
	at docking.DockingWindowManager.showDialog(DockingWindowManager.java:1704)
	at docking.AbstractDockingTool.showDialog(AbstractDockingTool.java:154)
	at ghidra.app.plugin.core.debug.service.model.DebuggerModelServicePlugin.doShowConnectDialog(DebuggerModelServicePlugin.java:679)
	at ghidra.app.plugin.core.debug.service.model.DebuggerModelServiceProxyPlugin.showConnectDialog(DebuggerModelServiceProxyPlugin.java:270)
	at ghidra.app.services.DebuggerModelService.showConnectDialog(DebuggerModelService.java:356)
	at ghidra.app.plugin.core.debug.gui.target.DebuggerTargetsProvider$ConnectAction.actionPerformed(DebuggerTargetsProvider.java:110)
	at docking.menu.ToolBarItemManager.lambda$actionPerformed$0(ToolBarItemManager.java:128)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

---------------------------------------------------
Build Date: 2021-Dec-21 1319 EST
Ghidra Version: 10.1.1
Java Home: /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
JVM Version: Eclipse Adoptium 17.0.1
OS: Mac OS X 12.0.1 aarch64
Workstation: 172.30.1.13

@d-millar
Copy link
Collaborator

OK - guess I could have been clearer:

Re (2), link /opt/homebrew/Cellar/llvm/13.0.0_2/bin/liblldb.dylib to /opt/homebrew/Cellar/llvm/13.0.0_2/lib/liblldb.13.0.0.dylib

Re (3), LLVM_BUILD & LLVM_HOME should now be set to /opt/homebrew/Cellar/llvm/13.0.0_2.

Re (4), you HAVE to do Step 4 (or the equivalent using LD_LIBRARY_PATH, which I’m not sure works), i.e -Djava.library.path=/opt/homebrew/Cellar/llvm/13.0.0_2/bin/liblldb.dylib:/path_to/Ghidra/Debug/Debugger-swig-lldb/build/os/macos…/liblldb-java.dylib

@marienmare
Copy link
Author

@d-millar

I have some problem, when i tried gradle build in swig-lldb
can't found lldb/lldb-public.h

I can't search it in google. doesn't found solution.
Do you know something solution?

> Task :Debugger-swig-lldb:compileMainMac_arm_64StaticLibraryMainCpp FAILED
/opt/homebrew/Caskroom/ghidra/10.1.1,20211221/ghidra_10.1.1_PUBLIC/Ghidra/Debug/Debugger-swig-lldb/src/main/cpp/LLDBWrapJava.cpp:266:10: fatal error: 'lldb/lldb-public.h' file not found
#include "lldb/lldb-public.h"
         ^~~~~~~~~~~~~~~~~~~~
1 error generated.

@d-millar
Copy link
Collaborator

If your “include” directory does not include that file, you need to “git clone” llvm and point LLVM_HOME at the root of that project.

@d-millar d-millar added the Status: Waiting on customer Waiting for customer feedback label Jan 6, 2022
@ryanmkurtz
Copy link
Collaborator

@j4hmilli Did you ever get this working?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants