Fix lldb-vscode logging and enable logging for all lldb-vscode tests.

Summary:
This patch fixes logging to log incoming packets which was removed during a refactor.

We also enable logging to a "vscode.txt" file for each lldb-vscode test by creating the log file in the build artifacts directory for each test. This allows users to see the packets for their tests if needed and the log file is in a directory that will be removed after tests have been run.

Reviewers: labath, aadsm, serhiy.redko, jankratochvil, xiaobai, wallace

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D74566
This commit is contained in:
Greg Clayton 2020-02-13 08:44:07 -08:00
parent f0b57d8071
commit 7202d1c2f6
3 changed files with 16 additions and 4 deletions

View File

@ -12,8 +12,10 @@ class VSCodeTestCaseBase(TestBase):
'''Create the Visual Studio Code debug adaptor'''
self.assertTrue(os.path.exists(self.lldbVSCodeExec),
'lldb-vscode must exist')
log_file_path = self.getBuildArtifact('vscode.txt')
self.vscode = vscode.DebugAdaptor(
executable=self.lldbVSCodeExec, init_commands=self.setUpCommands())
executable=self.lldbVSCodeExec, init_commands=self.setUpCommands(),
log_file=log_file_path)
def build_and_create_debug_adaptor(self):
self.build()
@ -133,7 +135,7 @@ class VSCodeTestCaseBase(TestBase):
key, key_path, d))
return value
def get_stackFrames_and_totalFramesCount(self, threadId=None, startFrame=None,
def get_stackFrames_and_totalFramesCount(self, threadId=None, startFrame=None,
levels=None, dump=False):
response = self.vscode.request_stackTrace(threadId=threadId,
startFrame=startFrame,

View File

@ -847,13 +847,17 @@ class DebugCommunication(object):
class DebugAdaptor(DebugCommunication):
def __init__(self, executable=None, port=None, init_commands=[]):
def __init__(self, executable=None, port=None, init_commands=[], log_file=None):
self.process = None
if executable is not None:
adaptor_env = os.environ.copy()
if log_file:
adaptor_env['LLDBVSCODE_LOG'] = log_file
self.process = subprocess.Popen([executable],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stderr=subprocess.PIPE,
env=adaptor_env)
DebugCommunication.__init__(self, self.process.stdout,
self.process.stdin, init_commands)
elif port is not None:

View File

@ -129,6 +129,12 @@ std::string VSCode::ReadJSON() {
if (!input.read_full(log.get(), length, json_str))
return json_str;
if (log) {
*log << "--> " << std::endl
<< "Content-Length: " << length << "\r\n\r\n"
<< json_str << std::endl;
}
return json_str;
}