What is your type for 'env' below? process = target.Launch(self.dbg.GetListener(), ['a','b'], env, stdin, 'stdout.txt, 'stderr.txt', os.getcwd(), 0 , True, err)
It must be a list like ['FOO=BAR', 'STUFF=COOL']: process = target.Launch(self.dbg.GetListener(), ['a','b'], ['FOO=BAR', 'STUFF=COOL'], stdin, 'stdout.txt', 'stderr.txt', os.getcwd(), 0 , True, err) Also how did you create "err"? You should create it first like this: err = lldb.SBError() env = ['FOO=BAR', 'STUFF=COOL'] process = target.Launch(self.dbg.GetListener(), ['a','b'], env, stdin, 'stdout.txt', 'stderr.txt', os.getcwd(), 0 , True, err) 'stdin' must be a string, and you probably want to make a full path to stdin and stdout.txt and stderr.txt just to be safe. > On Oct 20, 2014, at 10:31 PM, Matthew Gardiner <m...@csr.com> wrote: > > No I don't really know swig, either. > > If you don't have commit access then I could try to test out your patch > some more and then commit it. > > Matt > > On Mon, 2014-10-20 at 22:25 -0700, zephyr git wrote: >> Hi Matthew, >> >> >> It seems to be some swig >> issue: >> http://stackoverflow.com/questions/14220151/swig-typemap-with-c-overloaded-function >> >> >> I'm still playing with it.(I'm not familiar with swig) >> >> >> If I rename one version as suggested in the link above, it works: >> >> >> diff --git a/scripts/Python/interface/SBTarget.i >> b/scripts/Python/interface/SBTarget.i >> index 345929a..fc4e8ea 100644 >> --- a/scripts/Python/interface/SBTarget.i >> +++ b/scripts/Python/interface/SBTarget.i >> @@ -425,6 +425,7 @@ public: >> const char **envp, >> const char *working_directory); >> >> >> + %rename(Launch_2) Launch; >> lldb::SBProcess >> Launch (lldb::SBLaunchInfo &launch_info, lldb::SBError& error); >> >> >> >> >> >> >> >> On Mon, Oct 20, 2014 at 10:18 PM, Matthew Gardiner <m...@csr.com> >> wrote: >> Hi Zephyr >> >> I too have seen similar issue with this API. >> >> I noticed that the file >> scripts/Python/python-swigsafecast.swig has no >> entry for SBListener, and wondered if this was relevant. >> >> Matt >> >> >> On Mon, 2014-10-20 at 21:57 -0700, zephyr git wrote: >>> Hi, >>> >>> >>> I'm using the SBTarget.Launch() API in Python: >>> >>> >>> process = target.Launch(self.dbg.GetListener(), ['a','b'], >> env, stdin, >>> 'stdour.txt, 'stderr.txt', os.getcwd(), 0 , True, err) >>> >>> >>> >>> I got the following error: >>> >>> >>> ... >>> File >>> >> "/home/media/llvm/lib/python2.7/site-packages/lldb/__init__.py", line >>> 7973, in Launch >>> return _lldb.SBTarget_Launch(self, *args) >>> NotImplementedError: Wrong number or type of arguments for >> overloaded >>> function 'SBTarget_Launch'. >>> Possible C/C++ prototypes are: >>> lldb::SBTarget::Launch(lldb::SBListener &,char const >> **,char const >>> **,char const *,char const *,char const *,char const >>> *,uint32_t,bool,lldb::SBError &) >>> lldb::SBTarget::Launch(lldb::SBLaunchInfo >> &,lldb::SBError &) >>> >>> >>> If I replace the string list ['a','b'] with None, it works. >>> >>> >>> I find that all the tests and samples uses None. >>> >>> >>> It looks the problem stems from overloaded Launch in >> SBTarget.i. >>> >>> >>> In LLDBWrapPython.cpp: >>> >>> >>> _wrap_SBTarget_Launch__SWIG_0 () { ...} // wrapper for >>> Launch(lldb::SBListener &...) >>> >>> _wrap_SBTarget_Launch__SWIG_1 () { ...} // wrapper for >> Launch >>> (lldb::SBLaunchInfo &...); >>> >>> >>> >>> SWIGINTERN PyObject *_wrap_SBTarget_Launch(PyObject *self, >> PyObject >>> *args) { >>> >>> ... >>> if (argc == 3) { >>> .... >>> } >>> if (argc == 11) { >>> int _v; >>> void *vptr = 0; >>> int res = SWIG_ConvertPtr(argv[0], &vptr, >>> SWIGTYPE_p_lldb__SBTarget, 0); >>> _v = SWIG_CheckState(res); >>> if (_v) { >>> void *vptr = 0; >>> int res = SWIG_ConvertPtr(argv[1], &vptr, >>> SWIGTYPE_p_lldb__SBListener, 0); >>> _v = SWIG_CheckState(res); >>> if (_v) { >>> void *vptr = 0; >>> int res = SWIG_ConvertPtr(argv[2], &vptr, >> SWIGTYPE_p_p_char, >>> 0); // ===================== Fails here. unable to cast to >> char** >>> _v = SWIG_CheckState(res); >>> if (_v) { >>> .... >>> if (_v) { >>> return >> _wrap_SBTarget_Launch__SWIG_0(self, >>> args); ================> real check here >>> ... >>> } >>> >>> fail: >>> SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number >> or type of >>> arguments for overloaded function 'SBTarget_Launch'.\n" >>> " Possible C/C++ prototypes are:\n" >>> " lldb::SBTarget::Launch(lldb::SBListener &,char >> const **,char >>> const **,char const *,char const *,char const *,char const >>> *,uint32_t,bool,lldb::SBError &)\n" >>> " lldb::SBTarget::Launch(lldb::SBLaunchInfo >> &,lldb::SBError >>> &)\n"); >>> return 0; >>> >>> >>> >>> >>> It seems to me the swig code does some unnecessary check >> before it >>> goes into the real wrapper. >>> Any inputs? >>> >>> >>> Thanks, >>> Zephyr >>> >>> >> >>> To report this email as spam click here. >>> >>> _______________________________________________ >>> lldb-dev mailing list >>> lldb-dev@cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev >> >> >> >> >> Member of the CSR plc group of companies. CSR plc registered >> in England and Wales, registered number 4187346, registered >> office Churchill House, Cambridge Business Park, Cowley Road, >> Cambridge, CB4 0WZ, United Kingdom >> More information can be found at www.csr.com. Keep up to date >> with CSR on our technical blog, www.csr.com/blog, CSR people >> blog, www.csr.com/people, YouTube, >> www.youtube.com/user/CSRplc, Facebook, >> www.facebook.com/pages/CSR/191038434253534, or follow us on >> Twitter at www.twitter.com/CSR_plc. >> New for 2014, you can now access the wide range of products >> powered by aptX at www.aptx.com. >> >> > > > _______________________________________________ > lldb-dev mailing list > lldb-dev@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev _______________________________________________ lldb-dev mailing list lldb-dev@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev