Thank you Jim and Greg, for your help. I will be careful with threads and I will also switch to using launch info.
Kind regards Jayvee Am Do., 18. Juli 2019 um 19:19 Uhr schrieb Jim Ingham <jing...@apple.com>: > The main problem with trying to run a debug session multithreaded is > coordinating execution control. Thread A gets a variable list and iterates > over it to get child values. Thread B issues a "step" command. The API's > thread A calls will either fail (because the target is running) or maybe > fetch data that is now one step too new for some of the calls, if the step > completed quickly. LLDB doesn't have any built-in mechanism for a thread > to start a session which locks out other threads from running the target. > So if you want to do your work on multiple threads you'll need to add > something like that. And as Greg says, for many purposes you will need to > have a cancellation mechanism as well, since people often want to "step > really quickly" and don't want to wait for fresh values of the local > variables to be fetched before the next step can start. > > Jim > > > > On Jul 18, 2019, at 4:00 AM, Jayvee Neumann via lldb-dev < > lldb-dev@lists.llvm.org> wrote: > > > > Thank you for your help. > > > > What is the reason for using SBLaunchInfo over calling tgt.Launch with > the launch configuration as a set of parameters? Furthermore I do not see a > way to set stdout, stdin, and stderr for the launched process by using > SBLaunchInfo. > > > > I have a question regarding the event loop. > > Is lldb thread-safe enough such that I can run that loop in another > std::thread while simultaneously using other debugger functions? > > > > Kind regards, > > Jayvee > > > > Am Fr., 12. Juli 2019 um 19:56 Uhr schrieb Greg Clayton < > clayb...@gmail.com>: > > You need to call SBDebugger::Initialize() before calling > SBDebugger::Create(). > > > > Also, please use the SBLaunchInfo method for launching if possible where > you create a SBLaunchInfo, then call tgt.Launch() with the instance. > > > > Other than that, as Jim said, you need to setup an event loop if you > don't use synchronous mode where you wait for events and respond to events. > > > > Greg > > > >> On Jun 26, 2019, at 4:58 AM, Jayvee Neumann via lldb-dev < > lldb-dev@lists.llvm.org> wrote: > >> > >> Dear LLDB developers, > >> > >> I am currently stuck while using the C++ API of LLDB. I am unable to > correctly launch a process. > >> The code I have written looks as follows: > >> > >> int main(int argc, char *argv[]){ > >> LLDBSentry senty; > >> SBDebugger dbg(SBDebugger::Create()); > >> ... > >> const char *exeFilePath = "./target"; > >> const char *arch = "x86_64"; > >> const char *platform = ""; > >> const char *dependentLibs = ""; > >> SBError error; > >> SBTarget tgt = dbg.CreateTarget(exeFilePath, arch, platform, > dependentLibs, error); > >> ... > >> SBListener listen; > >> SBProcess proc = tgt.Launch( > >> listen, > >> nullptr, > >> nullptr, > >> nullptr, > >> "targetout.txt", > >> nullptr, > >> "./", > >> eLaunchFlagExec | eLaunchFlagDebug, > >> false, > >> error > >> ); > >> ... > >> SBThread thread = proc.GetSelectedThread(); // (1) > >> ... > >> } > >> > >> The complete code (usr.cpp) is added as an attachment to this email. > >> Its output is also added as a text file (stdout.txt) to this email. > >> > >> The problem I have is, that thread.IsValid() returns null after line > (1). Furthermore, the process says, that its state is eStateStopped, when > asked via proc.IsStopped() it answers "false", however. > >> The debugging target is a simple file that writes a hexadecimal number > every 10us to stdout. I can see that the target is running, because > targetout.txt is growing in size and its content is valid output from > "target". > >> Can you tell me what my mistake is? > >> > >> Kind Regards > >> Jayvee > >> > >> <usr.cpp><stdout.txt>_______________________________________________ > >> lldb-dev mailing list > >> lldb-dev@lists.llvm.org > >> 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 > >
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev