From c8a6ef32420553c3a42a00f9e8511dd62fc48c87 Mon Sep 17 00:00:00 2001 From: xuhong Date: Thu, 20 Jun 2024 11:46:25 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=BF=BD=E7=95=A5data-evaluate-expre?= =?UTF-8?q?ssion=E8=AD=A6=E5=91=8A=E9=94=99=E8=AF=AF;=202=E3=80=81?= =?UTF-8?q?=E5=BF=BD=E7=95=A5No=20symbol=E9=94=99=E8=AF=AF;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/log.ts | 6 ------ src/backend/mi2/mi2.ts | 26 +++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/backend/log.ts b/src/backend/log.ts index a77a0ce..eeeb898 100644 --- a/src/backend/log.ts +++ b/src/backend/log.ts @@ -80,10 +80,8 @@ function rotateLogFiles() { } } -// 初始化日志文件 initializeLogFile(); -// 日志输出函数 function log(level: string, message: any) { const timestamp = new Date().toISOString(); const logMessage = `[${timestamp}] [${level}] ${message}`; @@ -95,22 +93,18 @@ function log(level: string, message: any) { } } -// 记录调试级别的日志 function debug(message: any) { log(LOG_LEVEL.DEBUG, message); } -// 记录信息级别的日志 function info(message: any) { log(LOG_LEVEL.INFO, message); } -// 记录警告级别的日志 function warning(message: any) { log(LOG_LEVEL.WARNING, message); } -// 记录错误级别的日志 function error(message: any) { log(LOG_LEVEL.ERROR, message); } diff --git a/src/backend/mi2/mi2.ts b/src/backend/mi2/mi2.ts index ecf2fc1..9938442 100644 --- a/src/backend/mi2/mi2.ts +++ b/src/backend/mi2/mi2.ts @@ -19,7 +19,7 @@ const numRegex = /\d+/; const logMsgMatch = /(^\$[0-9]*[\ ]*=[\ ]*)(.*)/; const logReplace = /{([^}]*)}/; const logReplaceTest = /{([^}]*)}/g; - +const logger = require('../log'); function isPositiveInteger(str: string): boolean { const regex = /^[1-9]\d*$/; return regex.test(str); @@ -408,11 +408,13 @@ export class MI2 extends EventEmitter implements IBackend { this.log("console", "Log Message:" + this.logMsgVarProcess); } }else if(record.content.startsWith("No symbol")){ + logger.warning(`onOutput: No symbol, record:${JSON.stringify(record)}`); // this.log("log", "GDB -> App6: +++++++++:" + this.logMsgNum + ":" + record.content + ":" + this.logMsgVar); } } else { if(record.content.startsWith("No symbol")){ this.log(record.type, record.content); + logger.warning(`onOutput: No symbol, record:${JSON.stringify(record)}`); } } } else { @@ -1140,6 +1142,8 @@ export class MI2 extends EventEmitter implements IBackend { this.handlers[sel] = (node: MINode) => { delete this.needOutput[sel]; if (node && node.resultRecords && node.resultRecords.resultClass === "error") { + logger.warning(`sendCommand: suppressFailure:${suppressFailure}, ${JSON.stringify(node)}`); + if (!suppressFailure) { this.log("stderr", `WARNING: Error executing command '${command}'`); if(command.includes("exec-finish") && node.resultRecords.results[0][1].includes("not meaningful in the outermost frame")){ @@ -1148,8 +1152,28 @@ export class MI2 extends EventEmitter implements IBackend { this.log("stderr", `WARNING: reject not meaningful in the outermost++++`); reject(new MIError(node.result("reject not meaningful in the outermost") || "reject not meaningful in the outermost", command)); } + resolve(node); } else { + let ignoreFail = false; + node.resultRecords.results.forEach((result: [string, string]) => { + const key = result[0]; + const value = result[1]; + logger.warning(`sendCommand:suppressFailure:${suppressFailure}, foreach Key: ${key}, Value: ${value}`); + if(value.includes('No symbol')){ + ignoreFail = true; + } + else if(value.includes('Attempt to use a type name as an expression')){ + ignoreFail = true; + } + else if(value.includes('Problem parsing arguments: data-evaluate-expression')){ + ignoreFail = true; + } + }); + if(ignoreFail){ + resolve(node); + } + this.log("stderr", `WARNING: reject '${command}'`); reject(new MIError(node.result("msg") || "Internal error", command)); }