One option would be to redirect stdin/out/err when you launch your process:

(lldb) process launch --stdin /path/to/stdin.txt --stdout /path/to/stdout.txt 
--stderr /path/to/stderr.txt

Not sure if you could make a new emacs buffer that could hook up the in/out/err 
file handles to the inferior process? If you do that, then no 
eBroadcastBitSTDOUT will be sent!

I don't know much about the emacs, but it seems like this might be nice to get 
all of your process input/output in a separate window?

Greg

> On Jul 11, 2014, at 12:33 PM, Randy Smith <rdsm...@chromium.org> wrote:
> 
> 
> [Caveat: This is a minor issue, but it's annoying to me, so I'd like to at 
> least explore how to fix it properly before giving up.]
> 
> So my standard use of lldb is inside of gud-mode in emacs.  In that mode, I 
> believe line editing is disabled (the output of lldb is a dumb terminal that 
> emacs wraps).  As a result, IOHandlerEditLine::Hide and Refresh are not 
> balanced; Hide() does nothing, and Refresh() re-prints the prompt.
> 
> The result of this is that when I'm debugging an inferior that has a lot of 
> output, I get many copies of the (lldb) prompt interwoven with the output.  
> I've traced this behavior to Debugger::HandleProcessEvent() being called 
> repeatedly with event_type Process::eBroadcastBitSTDOUT.  In such a 
> situation, it calls HideTopIOHandler(), copies the output out, and then calls 
> RefreshTopIOHandler().
> 
> The behavior that I personally think would be ideal in this configuration 
> would be for the prompt only to be refreshed if an inferior event *other* 
> than stdout or stderr occurs.  And I can code that in 
> Debugger::HandleProcessEvent() pretty easily by only calling refresh if some 
> other event is occurs, but that's clearly the wrong architectural choice 
> (because it breaks the Hide/Refresh contract on IOHandler).  Maybe adding an 
> argument to RefreshTopIOHandler indicating if the refresh was requested 
> because anything other than output was copied?  I'm almost tempted to just 
> pass in the event type, but it doesn't really make sense that IOHandlers know 
> about the Process broadcast constants.  
> 
> Anyone have any thoughts?  (Including "This is minor and fixing it would be a 
> hassle; live with it" :-})
> 
> -- Randy
> 
> 
> _______________________________________________
> 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

Reply via email to