diff --git a/ide/src/trace/component/SpFlags.ts b/ide/src/trace/component/SpFlags.ts
index d3bf08454..e8ebe0f8a 100644
--- a/ide/src/trace/component/SpFlags.ts
+++ b/ide/src/trace/component/SpFlags.ts
@@ -15,6 +15,9 @@
import { BaseElement, element } from '../../base-ui/BaseElement';
import { SpFlagHtml } from './SpFlag.html';
+import { LitSelectV } from '../../base-ui/select/LitSelectV';
+import { SysCallMap } from './trace/base/SysCallUtils';
+
const NUM = '000000';
//vsync二级下拉选框对应的value和content
const VSYNC_CONTENT = [
@@ -46,14 +49,71 @@ const CONFIG_STATE: unknown = {
export class SpFlags extends BaseElement {
private bodyEl: HTMLElement | undefined | null;
private xiaoLubanEl: Element | null | undefined;
+ private systemCallSelect: LitSelectV | undefined | null;
+ private systemCallInput: HTMLInputElement | undefined | null;
+ private systemCallEventId: number[] = [];
+ private systemCallSwitch: HTMLSelectElement | undefined | null;
+
+
+ connectedCallback(): void {
+ this.systemCallInput?.addEventListener('mousedown', this.systemCallSelectMousedownHandler);
+ this.systemCallSelect?.addEventListener('blur', this.systemCallSelectBlurHandler);
+ }
+
+ disconnectedCallback(): void {
+ super.disconnectedCallback();
+ this.systemCallInput?.removeEventListener('mousedown', this.systemCallSelectMousedownHandler);
+ this.systemCallSelect?.removeEventListener('blur', this.systemCallSelectBlurHandler);
+ }
initElements(): void {
let parentElement = this.parentNode as HTMLElement;
parentElement.style.overflow = 'hidden';
this.bodyEl = this.shadowRoot?.querySelector('.body');
this.initConfigList();
+ this.systemCallSelect = this.shadowRoot?.querySelector("lit-select-v[title='SystemCall']");
+ this.systemCallSwitch = this.shadowRoot?.querySelector("select[title='System Calls']");
+ this.systemCallInput = this.systemCallSelect!.shadowRoot?.querySelector('input') as HTMLInputElement;
+ this.updateSystemCallSelect();
}
+ private updateSystemCallSelect(): void {
+ if (this.systemCallSwitch?.title === 'System Calls' && this.systemCallSwitch.selectedOptions[0].value === 'Enabled') {
+ this.systemCallSelect?.removeAttribute('disabled');
+ this.systemCallSelect?.dataSource([], '');
+ } else {
+ this.systemCallSelect?.setAttribute('disabled', 'disabled');
+ this.systemCallSelect?.dataSource([], '');
+ }
+ }
+
+ private systemCallSelectBlurHandler = () => {
+ let systemCallSelectOptions = this.systemCallSelect!.shadowRoot?.querySelectorAll('.option');
+ this.systemCallEventId = [];
+ systemCallSelectOptions!.forEach((option) => {
+ if (option.hasAttribute('selected')) {
+ const systemCallEventItem = Array.from(SysCallMap.entries())
+ .find(([id, name]) => name === option.getAttribute('value'));
+ if (systemCallEventItem) {
+ this.handleSystemCallEventId(systemCallEventItem[0]);
+ }
+ }
+ });
+ FlagsConfig.updateSystemcallEventId(this.systemCallEventId, 'SystemParsing');
+ return this.systemCallEventId;
+ };
+
+ private handleSystemCallEventId = (systemCallEventId: number): void => {
+ this.systemCallEventId.push(systemCallEventId);
+ };
+
+ private systemCallSelectMousedownHandler = (): void => {
+ if (this.systemCallSwitch)
+ systemCallConfigList[0].selectArray = Array.from(SysCallMap.entries())
+ .map(([id, name]) => `${name}`);
+ this.systemCallSelect?.dataSource(systemCallConfigList[0].selectArray, 'ALL-SystemCall')
+ };
+
initHtml(): string {
return SpFlagHtml;
}
@@ -102,6 +162,11 @@ export class SpFlags extends BaseElement {
this.xiaoLubanEl?.removeAttribute('enabled');
}
}
+ if (configSelect.title === 'System Calls' && configSelect.selectedOptions[0].value === 'Enabled') {
+ this.systemCallSelect?.removeAttribute('disabled');
+ } else {
+ this.systemCallSelect?.setAttribute('disabled', 'disabled');
+ }
});
let userIdInput: HTMLInputElement | null | undefined = this.shadowRoot?.querySelector('#user_id_input');
if (configSelect.title === 'AI' && configSelect.selectedOptions[0].value === 'Enabled' && userIdInput?.value === '') {
@@ -226,10 +291,51 @@ export class SpFlags extends BaseElement {
configFooterDiv.appendChild(userIdInputEl);
configDiv.appendChild(configFooterDiv);
}
+ if (config.title === 'System Calls') {
+ let configFooterDiv = document.createElement('div');
+ configFooterDiv.className = 'config_footer';
+ let systemCallConfigEl = document.createElement('div');
+ systemCallConfigEl.className = 'system-call-config';
+ systemCallConfigList.forEach((config) => {
+ let systemCallConfigDiv = document.createElement('div');
+ if (config.hidden) {
+ systemCallConfigDiv.className = 'systemCall-config-div hidden';
+ } else {
+ systemCallConfigDiv.className = 'systemCall-config-div';
+ }
+ switch (config.type) {
+ case 'select-multiple':
+ this.configTypeBySelectMultiple(config, systemCallConfigDiv);
+ break;
+ default:
+ break;
+ }
+ systemCallConfigEl.appendChild(systemCallConfigDiv);
+ })
+ configFooterDiv.appendChild(systemCallConfigEl);
+ configDiv.appendChild(configFooterDiv);
+ }
this.bodyEl!.appendChild(configDiv);
});
}
+ private configTypeBySelectMultiple(config: unknown, systemCallConfigDiv: HTMLDivElement): void {
+ let html = '';
+ //@ts-ignore
+ let placeholder = config.selectArray[0];
+ html += ``;
+ //@ts-ignore
+ config.selectArray.forEach((value: string) => {
+ html += `${value}`;
+ });
+ html += '';
+ systemCallConfigDiv.innerHTML = systemCallConfigDiv.innerHTML + html;
+ }
+
private createPersonOption(list: unknown, key: string, config: unknown): HTMLDivElement {
let configFooterDiv = document.createElement('div');
configFooterDiv.className = 'config_footer';
@@ -279,6 +385,7 @@ export type Params = {
export class FlagsConfig {
static FLAGS_CONFIG_KEY = 'FlagsConfig';
+ static SYSTEM_PRASE = 'SystemParsing';
static DEFAULT_CONFIG: Array = [
{
title: 'TaskPool',
@@ -359,6 +466,12 @@ export class FlagsConfig {
switchOptions: [{ option: 'Enabled' }, { option: 'Disabled', selected: true }],
describeContent: 'Start AI',
addInfo: { userId: '' },
+ },
+ {
+ title: 'System Calls',
+ switchOptions: [{ option: 'Enabled' }, { option: 'Disabled', selected: true }],
+ describeContent: 'Start System Call Parsing',
+ addInfo: { userId: '' },
}
];
@@ -417,6 +530,11 @@ export class FlagsConfig {
});
// @ts-ignore
parseConfig[configItem.title] = selectedOption[0].option === 'Enabled' ? 1 : 0;
+ // @ts-ignore
+ if (configItem.title === 'System Calls') {
+ // @ts-ignore
+ parseConfig[configItem.title] = selectedOption[0].option === 'Enabled' ? FlagsConfig.getSystemcallEventId('SystemParsing').join(';') : '';
+ }
});
return JSON.stringify({ config: parseConfig });
}
@@ -471,6 +589,21 @@ export class FlagsConfig {
flagConfigObj[key] = value;
window.localStorage.setItem(FlagsConfig.FLAGS_CONFIG_KEY, JSON.stringify(flagConfigObj));
}
+
+
+ static getSystemcallEventId(value: string): number[] {
+ let list = window.localStorage.getItem(FlagsConfig.SYSTEM_PRASE);
+ return JSON.parse(list!);
+ }
+
+ static updateSystemcallEventId(systemCallEventId: number[], value: unknown): void {
+ let systemcallEventId = window.localStorage.getItem(FlagsConfig.SYSTEM_PRASE);
+ let systemCallEventIdArray:number[] = [];
+ if (systemcallEventId !== null) {
+ systemCallEventIdArray = systemCallEventId;
+ }
+ window.localStorage.setItem(FlagsConfig.SYSTEM_PRASE, JSON.stringify(systemCallEventIdArray));
+ }
}
export interface FlagConfigItem {
@@ -484,3 +617,12 @@ export interface OptionItem {
option: string;
selected?: boolean;
}
+
+const systemCallConfigList = [
+ {
+ title: 'SystemCall',
+ des: '',
+ hidden: true,
+ type: 'select-multiple',
+ selectArray: [''],
+ }]
diff --git a/ide/src/trace/component/SpSystemTrace.init.ts b/ide/src/trace/component/SpSystemTrace.init.ts
index e239e4f96..8d43e0cd3 100644
--- a/ide/src/trace/component/SpSystemTrace.init.ts
+++ b/ide/src/trace/component/SpSystemTrace.init.ts
@@ -1190,6 +1190,7 @@ async function spSystemTraceInitBuffer(
sp: SpSystemTrace,
param: { buf?: ArrayBuffer; Url?: string; buf2?: ArrayBuffer },
wasmConfigUri: string,
+ configUri: string,
progress: Function
): Promise<{
status: boolean;
@@ -1203,13 +1204,23 @@ async function spSystemTraceInitBuffer(
error('getWasmConfigFailed', e);
}
let parseConfig = FlagsConfig.getSpTraceStreamParseConfig();
- let { status, msg, sdkConfigMap } = await threadPool.initSqlite(param.buf, parseConfig, configJson, progress);
+ let systemParseConfigJson = '';
+ try {
+ systemParseConfigJson = await fetch(configUri).then((res) => res.text());
+ let systemParseConfig = JSON.parse(systemParseConfigJson);
+ let parseConfigObj = JSON.parse(parseConfig);
+ systemParseConfig.config = parseConfigObj.config;
+ systemParseConfigJson = JSON.stringify(systemParseConfig);
+ } catch (e) {
+ error('systemParseConfigJsonFailed', e);
+ }
+ let { status, msg, sdkConfigMap } = await threadPool.initSqlite(param.buf, systemParseConfigJson, configJson, progress);
if (!status) {
return { status: false, msg: msg };
}
SpSystemTrace.SDK_CONFIG_MAP = sdkConfigMap;
if (param.buf2) {
- let { status, msg } = await threadPool2.initSqlite(param.buf2, parseConfig, configJson, progress);
+ let { status, msg } = await threadPool2.initSqlite(param.buf2, systemParseConfigJson, configJson, progress);
if (!status) {
return { status: false, msg: msg };
}
@@ -1223,6 +1234,7 @@ async function spSystemTraceInitUrl(
sp: SpSystemTrace,
param: { buf?: ArrayBuffer; url?: string },
wasmConfigUri: string,
+ configUri: string,
progress: Function
): Promise<{
status: boolean;
@@ -1243,16 +1255,17 @@ export async function spSystemTraceInit(
sp: SpSystemTrace,
param: { buf?: ArrayBuffer; url?: string; buf2?: ArrayBuffer; fileName1?: string; fileName2?: string },
wasmConfigUri: string,
+ configUri: string,
progress: Function,
isDistributed: boolean
): Promise {
progress('Load database', 6);
sp.rowsPaneEL!.scroll({ top: 0, left: 0 });
- let rsBuf = await spSystemTraceInitBuffer(sp, param, wasmConfigUri, progress);
+ let rsBuf = await spSystemTraceInitBuffer(sp, param, wasmConfigUri, configUri, progress);
if (rsBuf) {
return rsBuf;
}
- let rsUrl = await spSystemTraceInitUrl(sp, param, wasmConfigUri, progress);
+ let rsUrl = await spSystemTraceInitUrl(sp, param, wasmConfigUri, configUri, progress);
if (rsUrl) {
return rsUrl;
}
diff --git a/ide/src/trace/component/SpSystemTrace.ts b/ide/src/trace/component/SpSystemTrace.ts
index 32bcd1368..8f1449ea2 100644
--- a/ide/src/trace/component/SpSystemTrace.ts
+++ b/ide/src/trace/component/SpSystemTrace.ts
@@ -2257,7 +2257,7 @@ export class SpSystemTrace extends BaseElement {
complete?: ((res: { status: boolean; msg: string }) => void) | undefined
): void {
this.observerScrollHeightEnable = false;
- this.init({ url: url }, '', progress, false).then((res) => {
+ this.init({ url: url }, '', '', progress, false).then((res) => {
if (complete) {
// @ts-ignore
complete(res);
@@ -2271,6 +2271,7 @@ export class SpSystemTrace extends BaseElement {
loadDatabaseArrayBuffer(
buf: ArrayBuffer,
thirdPartyWasmConfigUrl: string,
+ configUrl:string,
progress: (name: string, percent: number) => void,
isDistributed: boolean,
complete?: ((res: { status: boolean; msg: string }) => void) | undefined,
@@ -2284,7 +2285,7 @@ export class SpSystemTrace extends BaseElement {
} else {
this.timerShaftEL?.removeAttribute('distributed');
}
- this.init({ buf, buf2, fileName1, fileName2 }, thirdPartyWasmConfigUrl, progress, isDistributed).then((res) => {
+ this.init({ buf, buf2, fileName1, fileName2 }, thirdPartyWasmConfigUrl, configUrl, progress, isDistributed).then((res) => {
// @ts-ignore
this.rowsEL?.querySelectorAll('trace-row').forEach((it: unknown) => this.observer.observe(it));
if (complete) {
@@ -2748,10 +2749,11 @@ export class SpSystemTrace extends BaseElement {
init = async (
param: { buf?: ArrayBuffer; url?: string; buf2?: ArrayBuffer; fileName1?: string; fileName2?: string },
wasmConfigUri: string,
+ configUrl: string,
progress: Function,
isDistributed: boolean
): Promise => {
- return spSystemTraceInit(this, param, wasmConfigUri, progress, isDistributed);
+ return spSystemTraceInit(this, param, wasmConfigUri, configUrl, progress, isDistributed);
};
// @ts-ignore
extracted(it: TraceRow) {
diff --git a/ide/src/trace/component/chart/SpProcessChart.ts b/ide/src/trace/component/chart/SpProcessChart.ts
index ab9af4073..f73df5056 100644
--- a/ide/src/trace/component/chart/SpProcessChart.ts
+++ b/ide/src/trace/component/chart/SpProcessChart.ts
@@ -620,7 +620,9 @@ export class SpProcessChart {
processRow.rowType = TraceRow.ROW_TYPE_PROCESS;
processRow.rowParentId = '';
processRow.style.height = '40px';
- this.processRowSettingConfig(processRow);
+ if (FlagsConfig.getFlagsConfigEnableStatus('System Calls')) {
+ this.processRowSettingConfig(processRow);
+ }
processRow.folder = true;
if (
//@ts-ignore
diff --git a/ide/src/trace/component/trace/base/SysCallUtils.ts b/ide/src/trace/component/trace/base/SysCallUtils.ts
index 3b8609a10..eda34c18f 100644
--- a/ide/src/trace/component/trace/base/SysCallUtils.ts
+++ b/ide/src/trace/component/trace/base/SysCallUtils.ts
@@ -14,282 +14,334 @@
*/
export const SysCallMap = new Map([
- [0, "sys_io_setup"],
- [1, "sys_io_destroy"],
- [2, "sys_io_submit"],
- [3, "sys_io_cancel"],
- [4, "sys_io_getevents"],
- [5, "sys_setxattr"],
- [6, "sys_lsetxattr"],
- [7, "sys_fsetxattr"],
- [8, "sys_getxattr"],
- [9, "sys_lgetxattr"],
- [10, "sys_fgetxattr"],
- [11, "sys_listxattr"],
- [12, "sys_llistxattr"],
- [13, "sys_flistxattr"],
- [14, "sys_removexattr"],
- [15, "sys_lremovexattr"],
- [16, "sys_fremovexattr"],
- [17, "sys_getcwd"],
- [18, "sys_lookup_dcookie"],
- [19, "sys_eventfd2"],
- [20, "sys_epoll_create1"],
- [21, "sys_epoll_ctl"],
- [22, "sys_epoll_pwait"],
- [23, "sys_dup"],
- [24, "sys_dup3"],
- [25, "sys_fcntl"],
- [26, "sys_inotify_init1"],
- [27, "sys_inotify_add_watch"],
- [28, "sys_inotify_rm_watch"],
- [29, "sys_ioctl"],
- [30, "sys_ioprio_set"],
- [31, "sys_ioprio_get"],
- [32, "sys_flock"],
- [33, "sys_mknodat"],
- [34, "sys_mkdirat"],
- [35, "sys_unlinkat"],
- [36, "sys_symlinkat"],
- [37, "sys_linkat"],
- [38, "sys_renameat"],
- [39, "sys_umount2"],
- [40, "sys_mount"],
- [41, "sys_pivot_root"],
- [42, "sys_nfsservctl"],
- [43, "sys_statfs"],
- [44, "sys_fstatfs"],
- [45, "sys_truncate"],
- [46, "sys_ftruncate"],
- [47, "sys_fallocate"],
- [48, "sys_faccessat"],
- [49, "sys_chdir"],
- [50, "sys_fchdir"],
- [51, "sys_chroot"],
- [52, "sys_fchmod"],
- [53, "sys_fchmodat"],
- [54, "sys_fchownat"],
- [55, "sys_fchown"],
- [56, "sys_openat"],
- [57, "sys_close"],
- [58, "sys_vhangup"],
- [59, "sys_pipe2"],
- [60, "sys_quotactl"],
- [61, "sys_getdents64"],
- [62, "sys_lseek"],
- [63, "sys_read"],
- [64, "sys_write"],
- [65, "sys_readlinkat"],
- [66, "sys_fstatat"],
- [67, "sys_fstat"],
- [68, "sys_sync"],
- [69, "sys_fsync"],
- [70, "sys_fdatasync"],
- [71, "sys_sync_file_range"],
- [72, "sys_timerfd_create"],
- [73, "sys_timerfd_settime"],
- [74, "sys_timerfd_gettime"],
- [75, "sys_utimensat"],
- [76, "sys_acct"],
- [77, "sys_capget"],
- [78, "sys_capset"],
- [79, "sys_personality"],
- [93, "sys_exit"],
- [94, "sys_exit_group"],
- [95, "sys_waitid"],
- [96, "sys_set_tid_address"],
- [97, "sys_unshare"],
- [98, "sys_futex"],
- [99, "sys_set_robust_list"],
- [100, "sys_get_robust_list"],
- [101, "sys_nanosleep"],
- [102, "sys_getitimer"],
- [103, "sys_setitimer"],
- [104, "sys_kexec_load"],
- [105, "sys_init_module"],
- [106, "sys_delete_module"],
- [107, "sys_timer_create"],
- [108, "sys_timer_settime"],
- [109, "sys_timer_gettime"],
- [110, "sys_timer_getoverrun"],
- [111, "sys_timer_delete"],
- [112, "sys_clock_settime"],
- [113, "sys_clock_gettime"],
- [114, "sys_clock_getres"],
- [115, "sys_clock_nanosleep"],
- [116, "sys_syslog"],
- [117, "sys_ptrace"],
- [118, "sys_sched_setparam"],
- [119, "sys_sched_setscheduler"],
- [120, "sys_sched_getscheduler"],
- [121, "sys_sched_getparam"],
- [122, "sys_sched_setaffinity"],
- [123, "sys_sched_getaffinity"],
- [124, "sys_sched_yield"],
- [125, "sys_sched_get_priority_max"],
- [126, "sys_sched_get_priority_min"],
- [127, "sys_sched_rr_get_interval"],
- [128, "sys_restart_syscall"],
- [129, "sys_kill"],
- [130, "sys_tkill"],
- [131, "sys_tgkill"],
- [132, "sys_sigaltstack"],
- [133, "sys_rt_sigsuspend"],
- [134, "sys_rt_sigaction"],
- [135, "sys_rt_sigprocmask"],
- [136, "sys_rt_sigpending"],
- [137, "sys_rt_sigtimedwait"],
- [138, "sys_rt_sigqueueinfo"],
- [139, "sys_rt_sigreturn"],
- [140, "sys_setpriority"],
- [141, "sys_getpriority"],
- [142, "sys_reboot"],
- [143, "sys_setregid"],
- [144, "sys_setgid"],
- [145, "sys_setreuid"],
- [146, "sys_setuid"],
- [147, "sys_setresuid"],
- [148, "sys_getresuid"],
- [149, "sys_setresgid"],
- [150, "sys_getresgid"],
- [151, "sys_setfsuid"],
- [152, "sys_setfsgid"],
- [153, "sys_times"],
- [154, "sys_setpgid"],
- [155, "sys_getpgid"],
- [156, "sys_getsid"],
- [157, "sys_setsid"],
- [158, "sys_getgroups"],
- [159, "sys_setgroups"],
- [160, "sys_uname"],
- [161, "sys_sethostname"],
- [162, "sys_setdomainname"],
- [163, "sys_getrlimit"],
- [164, "sys_setrlimit"],
- [165, "sys_getrusage"],
- [166, "sys_umask"],
- [167, "sys_prctl"],
- [168, "sys_getcpu"],
- [169, "sys_gettimeofday"],
- [170, "sys_settimeofday"],
- [171, "sys_adjtimex"],
- [172, "sys_getpid"],
- [173, "sys_getppid"],
- [174, "sys_getuid"],
- [175, "sys_geteuid"],
- [176, "sys_getgid"],
- [177, "sys_getegid"],
- [178, "sys_gettid"],
- [179, "sys_sysinfo"],
- [180, "sys_mq_open"],
- [181, "sys_mq_unlink"],
- [182, "sys_mq_timedsend"],
- [183, "sys_mq_timedreceive"],
- [184, "sys_mq_notify"],
- [185, "sys_mq_getsetattr"],
- [186, "sys_msgget"],
- [187, "sys_msgctl"],
- [188, "sys_msgrcv"],
- [189, "sys_msgsnd"],
- [190, "sys_semget"],
- [191, "sys_semctl"],
- [192, "sys_semop"],
- [193, "sys_semtimedop"],
- [194, "sys_shmget"],
- [195, "sys_shmctl"],
- [196, "sys_shmat"],
- [197, "sys_shmdt"],
- [198, "sys_socket"],
- [199, "sys_socketpair"],
- [200, "sys_bind"],
- [201, "sys_listen"],
- [202, "sys_accept"],
- [203, "sys_connect"],
- [204, "sys_getsockname"],
- [205, "sys_getpeername"],
- [206, "sys_sendto"],
- [207, "sys_recvfrom"],
- [208, "sys_setsockopt"],
- [209, "sys_getsockopt"],
- [210, "sys_shutdown"],
- [211, "sys_sendmsg"],
- [212, "sys_recvmsg"],
- [213, "sys_readahead"],
- [214, "sys_brk"],
- [215, "sys_munmap"],
- [216, "sys_mremap"],
- [217, "sys_add_key"],
- [218, "sys_request_key"],
- [219, "sys_keyctl"],
- [220, "sys_clone"],
- [221, "sys_execve"],
- [222, "sys_mmap"],
- [223, "sys_fadvise64"],
- [224, "sys_swapon"],
- [225, "sys_swapoff"],
- [226, "sys_mprotect"],
- [227, "sys_msync"],
- [228, "sys_mlock"],
- [229, "sys_munlock"],
- [230, "sys_mlockall"],
- [231, "sys_munlockall"],
- [232, "sys_mincore"],
- [233, "sys_madvise"],
- [234, "sys_remap_file_pages"],
- [235, "sys_mbind"],
- [236, "sys_get_mempolicy"],
- [237, "sys_set_mempolicy"],
- [238, "sys_migrate_pages"],
- [239, "sys_move_pages"],
- [240, "sys_rt_tgsigqueueinfo"],
- [241, "sys_perf_event_open"],
- [242, "sys_accept4"],
- [243, "sys_recvmmsg"],
- [260, "sys_wait4"],
- [261, "sys_prlimit64"],
- [262, "sys_fanotify_init"],
- [263, "sys_fanotify_mark"],
- [264, "sys_name_to_handle_at"],
- [265, "sys_open_by_handle_at"],
- [266, "sys_clock_adjtime"],
- [267, "sys_syncfs"],
- [268, "sys_setns"],
- [269, "sys_sendmmsg"],
- [270, "sys_process_vm_readv"],
- [271, "sys_process_vm_writev"],
- [272, "sys_kcmp"],
- [273, "sys_finit_module"],
- [274, "sys_sched_setattr"],
- [275, "sys_sched_getattr"],
- [276, "sys_renameat2"],
- [277, "sys_seccomp"],
- [278, "sys_getrandom"],
- [279, "sys_memfd_create"],
- [280, "sys_bpf"],
- [281, "sys_execveat"],
- [282, "sys_userfaultfd"],
- [283, "sys_membarrier"],
- [284, "sys_mlock2"],
- [285, "sys_copy_file_range"],
- [286, "sys_preadv2"],
- [287, "sys_pwritev2"],
- [288, "sys_pkey_mprotect"],
- [289, "sys_pkey_alloc"],
- [290, "sys_pkey_free"],
- [291, "sys_statx"],
- [292, "sys_io_pgetevents"],
- [293, "sys_rseq"],
- [294, "sys_kexec_file_load"],
- [424, "sys_pidfd_send_signal"],
- [425, "sys_io_uring_setup"],
- [426, "sys_io_uring_enter"],
- [427, "sys_io_uring_register"],
- [428, "sys_open_tree"],
- [429, "sys_move_mount"],
- [430, "sys_fsopen"],
- [431, "sys_fsconfig"],
- [432, "sys_fsmount"],
- [433, "sys_fspick"],
- [434, "sys_pidfd_open"],
- [435, "sys_clone3"]
+ [0, "sys_io_setup"],
+ [1, "sys_io_destroy"],
+ [2, "sys_io_submit"],
+ [3, "sys_io_cancel"],
+ [4, "sys_io_getevents"],
+ [5, "sys_setxattr"],
+ [6, "sys_lsetxattr"],
+ [7, "sys_fsetxattr"],
+ [8, "sys_getxattr"],
+ [9, "sys_lgetxattr"],
+ [10, "sys_fgetxattr"],
+ [11, "sys_listxattr"],
+ [12, "sys_llistxattr"],
+ [13, "sys_flistxattr"],
+ [14, "sys_removexattr"],
+ [15, "sys_lremovexattr"],
+ [16, "sys_fremovexattr"],
+ [17, "sys_getcwd"],
+ [18, "sys_lookup_dcookie"],
+ [19, "sys_eventfd2"],
+ [20, "sys_epoll_create1"],
+ [21, "sys_epoll_ctl"],
+ [22, "sys_epoll_pwait"],
+ [23, "sys_dup"],
+ [24, "sys_dup3"],
+ [25, "sys_fcntl"],
+ [26, "sys_inotify_init1"],
+ [27, "sys_inotify_add_watch"],
+ [28, "sys_inotify_rm_watch"],
+ [29, "sys_ioctl"],
+ [30, "sys_ioprio_set"],
+ [31, "sys_ioprio_get"],
+ [32, "sys_flock"],
+ [33, "sys_mknodat"],
+ [34, "sys_mkdirat"],
+ [35, "sys_unlinkat"],
+ [36, "sys_symlinkat"],
+ [37, "sys_linkat"],
+ [38, "sys_renameat"],
+ [39, "sys_umount2"],
+ [40, "sys_mount"],
+ [41, "sys_pivot_root"],
+ [42, "sys_nfsservctl"],
+ [43, "sys_statfs"],
+ [44, "sys_fstatfs"],
+ [45, "sys_truncate"],
+ [46, "sys_ftruncate"],
+ [47, "sys_fallocate"],
+ [48, "sys_faccessat"],
+ [49, "sys_chdir"],
+ [50, "sys_fchdir"],
+ [51, "sys_chroot"],
+ [52, "sys_fchmod"],
+ [53, "sys_fchmodat"],
+ [54, "sys_fchownat"],
+ [55, "sys_fchown"],
+ [56, "sys_openat"],
+ [57, "sys_close"],
+ [58, "sys_vhangup"],
+ [59, "sys_pipe2"],
+ [60, "sys_quotactl"],
+ [61, "sys_getdents64"],
+ [62, "sys_lseek"],
+ [63, "sys_read"],
+ [64, "sys_write"],
+ [65, "sys_readv"],
+ [66, "sys_writev"],
+ [67, "sys_pread64"],
+ [68, "sys_pwrite64"],
+ [69, "sys_preadv"],
+ [70, "sys_pwritev"],
+ [71, "sys_sendfile"],
+ [72, "sys_pselect6"],
+ [73, "sys_ppoll"],
+ [74, "sys_signalfd4"],
+ [75, "sys_vmsplice"],
+ [76, "sys_splice"],
+ [77, "sys_tee"],
+ [78, "sys_readlinkat"],
+ [79, "sys_fstatat"],
+ [80, "sys_fstat"],
+ [81, "sys_sync"],
+ [82, "sys_fsync"],
+ [83, "sys_fdatasync"],
+ [84, "sys_sync_file_range"],
+ [85, "sys_timerfd_create"],
+ [86, "sys_timerfd_settime"],
+ [87, "sys_timerfd_gettime"],
+ [88, "sys_utimensat"],
+ [89, "sys_acct"],
+ [90, "sys_capget"],
+ [91, "sys_capset"],
+ [92, "sys_personality"],
+ [93, "sys_exit"],
+ [94, "sys_exit_group"],
+ [95, "sys_waitid"],
+ [96, "sys_set_tid_address"],
+ [97, "sys_unshare"],
+ [98, "sys_futex"],
+ [99, "sys_set_robust_list"],
+ [100, "sys_get_robust_list"],
+ [101, "sys_nanosleep"],
+ [102, "sys_getitimer"],
+ [103, "sys_setitimer"],
+ [104, "sys_kexec_load"],
+ [105, "sys_init_module"],
+ [106, "sys_delete_module"],
+ [107, "sys_timer_create"],
+ [108, "sys_timer_gettime"],
+ [109, "sys_timer_getoverrun"],
+ [110, "sys_timer_settime"],
+ [111, "sys_timer_delete"],
+ [112, "sys_clock_settime"],
+ [113, "sys_clock_gettime"],
+ [114, "sys_clock_getres"],
+ [115, "sys_clock_nanosleep"],
+ [116, "sys_syslog"],
+ [117, "sys_ptrace"],
+ [118, "sys_sched_setparam"],
+ [119, "sys_sched_setscheduler"],
+ [120, "sys_sched_getscheduler"],
+ [121, "sys_sched_getparam"],
+ [122, "sys_sched_setaffinity"],
+ [123, "sys_sched_getaffinity"],
+ [124, "sys_sched_yield"],
+ [125, "sys_sched_get_priority_max"],
+ [126, "sys_sched_get_priority_min"],
+ [127, "sys_sched_rr_get_interval"],
+ [128, "sys_restart_syscall"],
+ [129, "sys_kill"],
+ [130, "sys_tkill"],
+ [131, "sys_tgkill"],
+ [132, "sys_sigaltstack"],
+ [133, "sys_rt_sigsuspend"],
+ [134, "sys_rt_sigaction"],
+ [135, "sys_rt_sigprocmask"],
+ [136, "sys_rt_sigpending"],
+ [137, "sys_rt_sigtimedwait"],
+ [138, "sys_rt_sigqueueinfo"],
+ [139, "sys_rt_sigreturn"],
+ [140, "sys_setpriority"],
+ [141, "sys_getpriority"],
+ [142, "sys_reboot"],
+ [143, "sys_setregid"],
+ [144, "sys_setgid"],
+ [145, "sys_setreuid"],
+ [146, "sys_setuid"],
+ [147, "sys_setresuid"],
+ [148, "sys_getresuid"],
+ [149, "sys_setresgid"],
+ [150, "sys_getresgid"],
+ [151, "sys_setfsuid"],
+ [152, "sys_setfsgid"],
+ [153, "sys_times"],
+ [154, "sys_setpgid"],
+ [155, "sys_getpgid"],
+ [156, "sys_getsid"],
+ [157, "sys_setsid"],
+ [158, "sys_getgroups"],
+ [159, "sys_setgroups"],
+ [160, "sys_uname"],
+ [161, "sys_sethostname"],
+ [162, "sys_setdomainname"],
+ [163, "sys_getrlimit"],
+ [164, "sys_setrlimit"],
+ [165, "sys_getrusage"],
+ [166, "sys_umask"],
+ [167, "sys_prctl"],
+ [168, "sys_getcpu"],
+ [169, "sys_gettimeofday"],
+ [170, "sys_settimeofday"],
+ [171, "sys_adjtimex"],
+ [172, "sys_getpid"],
+ [173, "sys_getppid"],
+ [174, "sys_getuid"],
+ [175, "sys_geteuid"],
+ [176, "sys_getgid"],
+ [177, "sys_getegid"],
+ [178, "sys_gettid"],
+ [179, "sys_sysinfo"],
+ [180, "sys_mq_open"],
+ [181, "sys_mq_unlink"],
+ [182, "sys_mq_timedsend"],
+ [183, "sys_mq_timedreceive"],
+ [184, "sys_mq_notify"],
+ [185, "sys_mq_getsetattr"],
+ [186, "sys_msgget"],
+ [187, "sys_msgctl"],
+ [188, "sys_msgrcv"],
+ [189, "sys_msgsnd"],
+ [190, "sys_semget"],
+ [191, "sys_semctl"],
+ [192, "sys_semtimedop"],
+ [193, "sys_semop"],
+ [194, "sys_shmget"],
+ [195, "sys_shmctl"],
+ [196, "sys_shmat"],
+ [197, "sys_shmdt"],
+ [198, "sys_socket"],
+ [199, "sys_socketpair"],
+ [200, "sys_bind"],
+ [201, "sys_listen"],
+ [202, "sys_accept"],
+ [203, "sys_connect"],
+ [204, "sys_getsockname"],
+ [205, "sys_getpeername"],
+ [206, "sys_sendto"],
+ [207, "sys_recvfrom"],
+ [208, "sys_setsockopt"],
+ [209, "sys_getsockopt"],
+ [210, "sys_shutdown"],
+ [211, "sys_sendmsg"],
+ [212, "sys_recvmsg"],
+ [213, "sys_readahead"],
+ [214, "sys_brk"],
+ [215, "sys_munmap"],
+ [216, "sys_mremap"],
+ [217, "sys_add_key"],
+ [218, "sys_request_key"],
+ [219, "sys_keyctl"],
+ [220, "sys_clone"],
+ [221, "sys_execve"],
+ [222, "sys_mmap"],
+ [223, "sys_fadvise64"],
+ [224, "sys_swapon"],
+ [225, "sys_swapoff"],
+ [226, "sys_mprotect"],
+ [227, "sys_msync"],
+ [228, "sys_mlock"],
+ [229, "sys_munlock"],
+ [230, "sys_mlockall"],
+ [231, "sys_munlockall"],
+ [232, "sys_mincore"],
+ [233, "sys_madvise"],
+ [234, "sys_remap_file_pages"],
+ [235, "sys_mbind"],
+ [236, "sys_get_mempolicy"],
+ [237, "sys_set_mempolicy"],
+ [238, "sys_migrate_pages"],
+ [239, "sys_move_pages"],
+ [240, "sys_rt_tgsigqueueinfo"],
+ [241, "sys_perf_event_open"],
+ [242, "sys_accept4"],
+ [243, "sys_recvmmsg"],
+ [244, "sys_arch_specific_syscall"],
+ [260, "sys_wait4"],
+ [261, "sys_prlimit64"],
+ [262, "sys_fanotify_init"],
+ [263, "sys_fanotify_mark"],
+ [264, "sys_name_to_handle_at"],
+ [265, "sys_open_by_handle_at"],
+ [266, "sys_clock_adjtime"],
+ [267, "sys_syncfs"],
+ [268, "sys_setns"],
+ [269, "sys_sendmmsg"],
+ [270, "sys_process_vm_readv"],
+ [271, "sys_process_vm_writev"],
+ [272, "sys_kcmp"],
+ [273, "sys_finit_module"],
+ [274, "sys_sched_setattr"],
+ [275, "sys_sched_getattr"],
+ [276, "sys_renameat2"],
+ [277, "sys_seccomp"],
+ [278, "sys_getrandom"],
+ [279, "sys_memfd_create"],
+ [280, "sys_bpf"],
+ [281, "sys_execveat"],
+ [282, "sys_userfaultfd"],
+ [283, "sys_membarrier"],
+ [284, "sys_mlock2"],
+ [285, "sys_copy_file_range"],
+ [286, "sys_preadv2"],
+ [287, "sys_pwritev2"],
+ [288, "sys_pkey_mprotect"],
+ [289, "sys_pkey_alloc"],
+ [290, "sys_pkey_free"],
+ [291, "sys_statx"],
+ [292, "sys_io_pgetevents"],
+ [293, "sys_rseq"],
+ [294, "sys_kexec_file_load"],
+ [403, "sys_clock_gettime64"],
+ [404, "sys_clock_settime64"],
+ [405, "sys_clock_adjtime64"],
+ [406, "sys_clock_getres_time64"],
+ [407, "sys_clock_nanosleep_time64"],
+ [408, "sys_timer_gettime64"],
+ [409, "sys_timer_settime64"],
+ [410, "sys_timerfd_gettime64"],
+ [411, "sys_timerfd_settime64"],
+ [412, "sys_utimensat_time64"],
+ [413, "sys_pselect6_time64"],
+ [414, "sys_ppoll_time64"],
+ [416, "sys_io_pgetevents_time64"],
+ [417, "sys_recvmmsg_time64"],
+ [418, "sys_mq_timedsend_time64"],
+ [419, "sys_mq_timedreceive_time64"],
+ [420, "sys_semtimedop_time64"],
+ [421, "sys_rt_sigtimedwait_time64"],
+ [422, "sys_futex_time64"],
+ [423, "sys_sched_rr_get_interval_time64"],
+ [424, "sys_pidfd_send_signal"],
+ [425, "sys_io_uring_setup"],
+ [426, "sys_io_uring_enter"],
+ [427, "sys_io_uring_register"],
+ [428, "sys_open_tree"],
+ [429, "sys_move_mount"],
+ [430, "sys_fsopen"],
+ [431, "sys_fsconfig"],
+ [432, "sys_fsmount"],
+ [433, "sys_fspick"],
+ [434, "sys_pidfd_open"],
+ [435, "sys_clone3"],
+ [436, "sys_close_range"],
+ [437, "sys_openat2"],
+ [438, "sys_pidfd_getfd"],
+ [439, "sys_faccessat2"],
+ [440, "sys_process_madvise"],
+ [441, "sys_epoll_pwait2"],
+ [442, "sys_mount_setattr"],
+ [443, "sys_quotactl_fd"],
+ [444, "sys_landlock_create_ruleset"],
+ [445, "sys_landlock_add_rule"],
+ [446, "sys_landlock_restrict_self"],
+ [447, "sys_memfd_secret"],
+ [448, "sys_process_mrelease"],
+ [449, "sys_futex_waitv"],
+ [450, "sys_set_mempolicy_home_node"],
+ [451, "sys_cachestat"],
+ [452, "sys_fchmodat2"],
+ [453, "sys_syscalls"]
]);
\ No newline at end of file
diff --git a/ide/src/trace/database/TraceWorker.ts b/ide/src/trace/database/TraceWorker.ts
index 1923ed8af..b9bb33ee2 100644
--- a/ide/src/trace/database/TraceWorker.ts
+++ b/ide/src/trace/database/TraceWorker.ts
@@ -332,7 +332,7 @@ function parseThirdWasmByOpenAction(e: MessageEvent): void {
if (parseConfig !== '') {
let parseConfigArray = enc.encode(parseConfig);
//@ts-ignore
- let parseConfigAddr = wasmModule._InitializeParseConfig(1024);
+ let parseConfigAddr = wasmModule._InitializeParseConfig(parseConfigArray.length);
//@ts-ignore
wasmModule.HEAPU8.set(parseConfigArray, parseConfigAddr);
//@ts-ignore
diff --git a/ide/src/trace/database/data-trafic/process/ThreadSysCallDataReceiver.ts b/ide/src/trace/database/data-trafic/process/ThreadSysCallDataReceiver.ts
index 61af08b98..8001f4c08 100644
--- a/ide/src/trace/database/data-trafic/process/ThreadSysCallDataReceiver.ts
+++ b/ide/src/trace/database/data-trafic/process/ThreadSysCallDataReceiver.ts
@@ -12,22 +12,46 @@
// limitations under the License.
import { Args } from '../CommonArgs';
+import { threadSysCallList } from '../utils/AllMemoryCache';
+import { filterDataByGroup } from '../utils/DataFilter';
import { TraficEnum } from '../utils/QueryEnum';
export const chartThreadSysCallDataSql = (args: Args):unknown => {
- return `SELECT syscall_number as id, itid, ts - ${args.recordStartNS} as startTs, dur
+ return `SELECT syscall_number as id, itid, ts - ${args.recordStartNS} as startTs, max(dur) as dur,
+ ((ts - ${args.recordStartNS}) / (${Math.floor((args.endNS - args.startNS) / args.width)})) AS px
from syscall
where itid = ${args.itid}
and startTs + dur >= ${Math.floor(args.startNS)}
and startTs <= ${Math.floor(args.endNS)}
+ group by px
`;
};
+export const sysCallMemSql = (args: Args): unknown => {
+ return `select syscall_number as id, (ts - ${args.recordStartNS}) as startTs, dur from syscall where itid = ${args.itid}`
+}
+
export function threadSysCallDataReceiver(data: unknown, proc: Function): void {
//@ts-ignore
- let sql = chartThreadSysCallDataSql(data.params);
- let res = proc(sql); //@ts-ignore
- arrayBufferHandler(data, res, data.params.trafic !== TraficEnum.SharedArrayBuffer, false);
+ let itid: number = data.params.itid;
+ let arr: unknown[] = [];
+ if (threadSysCallList.has(itid)) {
+ arr = threadSysCallList.get(itid) || [];
+ } else {
+ //@ts-ignore
+ let sql = sysCallMemSql(data.params);
+ arr = proc(sql); //@ts-ignore
+ threadSysCallList.set(itid, arr);
+ }
+ let res = filterDataByGroup(
+ arr,
+ 'startTs',
+ 'dur', //@ts-ignore
+ data.params.startNS, //@ts-ignore
+ data.params.endNS, //@ts-ignore
+ data.params.width
+ );
+ arrayBufferHandler(data, res, true, false);
}
function arrayBufferHandler(data: unknown, res: unknown[], transfer: boolean, isEmpty: boolean): void {
@@ -42,7 +66,7 @@ function arrayBufferHandler(data: unknown, res: unknown[], transfer: boolean, is
startTs[i] = it.startTs; //@ts-ignore
dur[i] = it.dur; //@ts-ignore
id[i] = it.id; //@ts-ignore
- itid[i] = it.itid; //@ts-ignore
+ itid[i] = data.params.itid; //@ts-ignore
});
(self as unknown as Worker).postMessage(
{
diff --git a/ide/src/trace/database/data-trafic/process/ThreadSysCallDataSender.ts b/ide/src/trace/database/data-trafic/process/ThreadSysCallDataSender.ts
index 2e296f123..f874b4f4c 100644
--- a/ide/src/trace/database/data-trafic/process/ThreadSysCallDataSender.ts
+++ b/ide/src/trace/database/data-trafic/process/ThreadSysCallDataSender.ts
@@ -73,7 +73,7 @@ function arrayBufferHandler(buffers: unknown, len: number, tid: number, pid: num
dur: dur[i],
id: id[i],
itid: itid[i],
- name: SysCallMap.get(id[i]),
+ name: SysCallMap.get(id[i]) || 'unknown event',
tid: tid,
pid: pid,
} as ThreadSysCallStruct);
diff --git a/ide/src/trace/database/data-trafic/utils/AllMemoryCache.ts b/ide/src/trace/database/data-trafic/utils/AllMemoryCache.ts
index d73f3e6f2..3abdb0f6a 100644
--- a/ide/src/trace/database/data-trafic/utils/AllMemoryCache.ts
+++ b/ide/src/trace/database/data-trafic/utils/AllMemoryCache.ts
@@ -47,6 +47,8 @@ export const processList: Map> = new Map();
export const memList: Map> = new Map();
//线程状态 泳道图 memory 模式缓存
export const threadStateList: Map> = new Map();
+//线程系统调用 泳道图 memory数据缓存
+export const threadSysCallList: Map> = new Map();
//进程下卡顿丢帧 泳道图 memory 模式缓存
export const processFrameList: Map> = new Map();
//hiSysEvent 泳道图 memory 模式缓存
@@ -78,6 +80,7 @@ export function clearMemoryCache(data: unknown, proc: Function): void {
processList.clear();
memList.clear();
threadStateList.clear();
+ threadSysCallList.clear();
processFrameList.clear();
lostFrameList.clear();
hitchTimeList.clear();
diff --git a/ide/src/trace/database/ui-worker/ProcedureWorkerThreadSysCall.ts b/ide/src/trace/database/ui-worker/ProcedureWorkerThreadSysCall.ts
index aac9df64b..823fe4f2e 100644
--- a/ide/src/trace/database/ui-worker/ProcedureWorkerThreadSysCall.ts
+++ b/ide/src/trace/database/ui-worker/ProcedureWorkerThreadSysCall.ts
@@ -107,7 +107,7 @@ export class ThreadSysCallStruct extends BaseStruct {
threadContext.fillStyle = ColorUtils.funcTextColor(textColor);
threadContext.textBaseline = 'middle';
threadContext.font = '8px sans-serif';
- data.frame.width > 7 && drawString(threadContext, data.name!, 2, data.frame, data);
+ data.frame.width > 7 && data.name && drawString(threadContext, data.name, 2, data.frame, data);
if (
ThreadSysCallStruct.selectStruct &&
ThreadSysCallStruct.equals(ThreadSysCallStruct.selectStruct, data)
diff --git a/ide/webpack.config.js b/ide/webpack.config.js
index 598d3265e..4ff1db13c 100644
--- a/ide/webpack.config.js
+++ b/ide/webpack.config.js
@@ -147,6 +147,10 @@ const config = {
from: './src/doc',
to: 'doc',
},
+ {
+ from: './src/config',
+ to: 'config',
+ },
{
from: './src/base-ui/icon.svg',
to: 'base-ui/icon.svg',
--
Gitee
From 4277877b5ea4e99971edf101207296df9fefa87b Mon Sep 17 00:00:00 2001
From: JustinYT
Date: Tue, 20 May 2025 09:47:42 +0800
Subject: [PATCH 18/47] update compile script for bzip2.
Signed-off-by: JustinYT
---
trace_streamer/pare_third_party.sh | 3 ---
1 file changed, 3 deletions(-)
diff --git a/trace_streamer/pare_third_party.sh b/trace_streamer/pare_third_party.sh
index a0b7cfa86..a3d030732 100755
--- a/trace_streamer/pare_third_party.sh
+++ b/trace_streamer/pare_third_party.sh
@@ -57,9 +57,6 @@ fi
if [ ! -f "bzip2/BUILD.gn" ];then
git clone --depth=1 git@gitee.com:openharmony/third_party_bzip2.git bzip2
- cd bzip2
- ./install.sh $(pwd)
- cd ..
fi
if [ ! -f "googletest/BUILD.gn" ];then
--
Gitee
From 1dd0024168dbb4f00183ccd5ae6df3f3b8cf5e18 Mon Sep 17 00:00:00 2001
From: JustinYT
Date: Wed, 21 May 2025 11:09:31 +0800
Subject: [PATCH 19/47] fix config.json not find
Signed-off-by: JustinYT
---
ide/src/trace/component/SpSystemTrace.init.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/ide/src/trace/component/SpSystemTrace.init.ts b/ide/src/trace/component/SpSystemTrace.init.ts
index 8d43e0cd3..75b7b3eab 100644
--- a/ide/src/trace/component/SpSystemTrace.init.ts
+++ b/ide/src/trace/component/SpSystemTrace.init.ts
@@ -1212,6 +1212,7 @@ async function spSystemTraceInitBuffer(
systemParseConfig.config = parseConfigObj.config;
systemParseConfigJson = JSON.stringify(systemParseConfig);
} catch (e) {
+ systemParseConfigJson = parseConfig;
error('systemParseConfigJsonFailed', e);
}
let { status, msg, sdkConfigMap } = await threadPool.initSqlite(param.buf, systemParseConfigJson, configJson, progress);
--
Gitee
From e77dbc37075a7606335e3177a7ab2c5deb1b6f31 Mon Sep 17 00:00:00 2001
From: JustinYT
Date: Wed, 21 May 2025 11:19:01 +0800
Subject: [PATCH 20/47] adjust syscalls json for use value
Signed-off-by: JustinYT
---
trace_streamer/src/filter/config_filter.cpp | 4 ++--
trace_streamer/src/rpc/rpc_server.cpp | 3 +--
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/trace_streamer/src/filter/config_filter.cpp b/trace_streamer/src/filter/config_filter.cpp
index d184bb8f7..dd03a20cd 100644
--- a/trace_streamer/src/filter/config_filter.cpp
+++ b/trace_streamer/src/filter/config_filter.cpp
@@ -42,7 +42,7 @@ ConfigFilter::ConfigFilter(TraceDataCache *dataCache, const TraceStreamerFilters
ConfigFilter::~ConfigFilter() {}
bool ConfigFilter::SetConfig(const std::string &configFile)
{
- json configResult = json::parse(configFile);
+ json configResult = json::parse(configFile, nullptr, false);
if (configResult.is_discarded()) {
TS_LOGE("Failed to parse config file.");
return false;
@@ -154,7 +154,7 @@ SwitchConfig::SwitchConfig(const json &config)
HMKernelTraceEnabled_ = config.value("HMKernel", 0) == 1;
rawTraceCutStartTsEnabled_ = config.value("RawTraceCutStartTs", 0) == 1;
ffrtConvertEnabled_ = config.value("FFRTConvert", 0) == 1;
- std::string syscalls = config.at("System Calls");
+ std::string syscalls = config.value("System Calls", "");
UpdateSyscallsTsSet(syscalls);
TS_LOGI(
"appConfigEnabled_=%d, animationConfigEnabled_=%d, taskPoolConfigEnabled_=%d, binderRunnableConfigEnabled_=%d, "
diff --git a/trace_streamer/src/rpc/rpc_server.cpp b/trace_streamer/src/rpc/rpc_server.cpp
index 39dc4f490..7adcc8a44 100644
--- a/trace_streamer/src/rpc/rpc_server.cpp
+++ b/trace_streamer/src/rpc/rpc_server.cpp
@@ -837,8 +837,7 @@ bool RpcServer::SplitFile(std::string timeSnaps)
bool RpcServer::ParserConfig(std::string parserConfigJson)
{
- json jMessage = json::parse(parserConfigJson);
- jsonns::ParserConfig parserConfig = jMessage.at("config");
+ TS_LOGI("parserConfigJson=%s", parserConfigJson.c_str());
ts_->SetConfigFile(parserConfigJson);
ffrtConvertEnabled_ = ts_->GetFfrtConfig();
startParseTime_ =
--
Gitee
From e1c5491833e2cdd8fd0cc1bc5eb9c83c1ffaf02f Mon Sep 17 00:00:00 2001
From: danghongquan
Date: Fri, 23 May 2025 14:30:46 +0800
Subject: [PATCH 21/47] =?UTF-8?q?fix:=E6=B1=87=E7=BC=96=E6=89=93=E7=82=B9?=
=?UTF-8?q?=E4=B8=8A=E6=8A=A5=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: danghongquan
---
.../component/trace/sheet/hiperf/TabPanePerfAnalysis.ts | 5 -----
ide/src/trace/component/trace/sheet/hiperf/TabPerfFuncAsm.ts | 5 +++++
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts
index 9b10f55a5..c04d2ce91 100644
--- a/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts
+++ b/ide/src/trace/component/trace/sheet/hiperf/TabPanePerfAnalysis.ts
@@ -27,7 +27,6 @@ import { TabpanePerfProfile } from './TabPerfProfile';
import { TabPanePerfAnalysisHtml } from './TabPanePerfAnalysis.html';
import { WebSocketManager } from '../../../../../webSocket/WebSocketManager';
import { Constants, TypeConstants } from '../../../../../webSocket/Constants';
-import { SpStatisticsHttpUtil } from '../../../../../statistics/util/SpStatisticsHttpUtil';
@element('tabpane-perf-analysis')
export class TabPanePerfAnalysis extends BaseElement {
@@ -592,10 +591,6 @@ export class TabPanePerfAnalysis extends BaseElement {
}
private functionClickEvent(it: unknown) {
- SpStatisticsHttpUtil.addOrdinaryVisitAction({
- event: 'hiperf_func',
- action: 'hiperf_func',
- });
// @ts-ignore
this.perfAnalysisHeadTips?.innerHTML = '';
if (this.selectedTabfileName.indexOf('.an') === -1 && this.selectedTabfileName.indexOf('.so') === -1) {
diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfFuncAsm.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfFuncAsm.ts
index b0db75e26..67d55a237 100644
--- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfFuncAsm.ts
+++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfFuncAsm.ts
@@ -22,6 +22,7 @@ import {
} from '../../../../bean/PerfAnalysis';
import { WebSocketManager } from '../../../../../webSocket/WebSocketManager';
import { Constants, TypeConstants } from '../../../../../webSocket/Constants';
+import { SpStatisticsHttpUtil } from '../../../../../statistics/util/SpStatisticsHttpUtil';
@element('tab-perf-func-asm')
export class TabPerfFuncAsm extends BaseElement {
@@ -170,6 +171,10 @@ export class TabPerfFuncAsm extends BaseElement {
if (cmd === Constants.DISASSEMBLY_QUERY_BACK_CMD) {
const result = JSON.parse(new TextDecoder().decode(e));
if (result.resultCode === 0) {
+ SpStatisticsHttpUtil.addOrdinaryVisitAction({
+ event: 'hiperf_func',
+ action: 'hiperf_func',
+ });
if (result.anFileOff) {
this.textFileOffElement!.innerHTML = `.text section: ${result.anFileOff}`;
this.textFileOffElement!.style.display = 'block';
--
Gitee
From 41ec4561c80157cf088ff5e0603bd414e0fc74f4 Mon Sep 17 00:00:00 2001
From: zhangzhuozhou
Date: Thu, 29 May 2025 10:37:50 +0800
Subject: [PATCH 22/47] =?UTF-8?q?feat:=E9=80=82=E9=85=8DH:Marsh=E6=89=93?=
=?UTF-8?q?=E7=82=B9=E5=8F=98=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: zhangzhuozhou
---
.../src/parser/print_event_parser.cpp | 26 +++++++++----------
.../src/parser/print_event_parser.h | 2 +-
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/trace_streamer/src/parser/print_event_parser.cpp b/trace_streamer/src/parser/print_event_parser.cpp
index a72718144..43d0d5061 100644
--- a/trace_streamer/src/parser/print_event_parser.cpp
+++ b/trace_streamer/src/parser/print_event_parser.cpp
@@ -375,21 +375,10 @@ bool PrintEventParser::OnRwTransaction(size_t callStackRow, std::string &args, c
{
// H:MarshRSTransactionData cmdCount:20 transactionFlag:[3799,8] isUni:1
std::smatch match;
- if (std::regex_search(args, match, transFlagPattern_)) {
- std::string mainTheadId = match.str(1);
- std::string flag2 = match.str(2);
- // use to update dstRenderSlice_
- auto mainThreadId =
- streamFilters_->processFilter_->GetInternalTid(base::StrToInt(mainTheadId).value());
- // use to update vsyncRenderSlice_
- auto currentThreadId = streamFilters_->processFilter_->GetInternalTid(line.pid);
- return streamFilters_->frameFilter_->BeginRSTransactionData(
- currentThreadId, base::StrToInt(flag2).value(), mainThreadId);
- }
if (std::regex_search(args, match, newTransFlagPattern_)) {
std::string mainTheadId = match.str(1);
- std::string currentThread = match.str(2);
- std::string flag2 = match.str(3);
+ std::string flag2 = match.str(2);
+ std::string currentThread = match.str(3);
std::string timeFlag = match.str(4);
auto mainThreadId =
streamFilters_->processFilter_->GetInternalTid(base::StrToInt(mainTheadId).value());
@@ -399,6 +388,17 @@ bool PrintEventParser::OnRwTransaction(size_t callStackRow, std::string &args, c
return streamFilters_->frameFilter_->BeginRSTransactionData(
currentThreadId, base::StrToInt(flag2).value(), mainThreadId, timeId);
}
+ if (std::regex_search(args, match, transFlagPattern_)) {
+ std::string mainTheadId = match.str(1);
+ std::string flag2 = match.str(2);
+ // use to update dstRenderSlice_
+ auto mainThreadId =
+ streamFilters_->processFilter_->GetInternalTid(base::StrToInt(mainTheadId).value());
+ // use to update vsyncRenderSlice_
+ auto currentThreadId = streamFilters_->processFilter_->GetInternalTid(line.pid);
+ return streamFilters_->frameFilter_->BeginRSTransactionData(
+ currentThreadId, base::StrToInt(flag2).value(), mainThreadId);
+ }
return true;
}
bool PrintEventParser::OnMainThreadProcessCmd(size_t callStackRow, std::string &args, const BytraceLine &line)
diff --git a/trace_streamer/src/parser/print_event_parser.h b/trace_streamer/src/parser/print_event_parser.h
index 2a6aab552..d3d80a1fd 100644
--- a/trace_streamer/src/parser/print_event_parser.h
+++ b/trace_streamer/src/parser/print_event_parser.h
@@ -100,7 +100,7 @@ private:
const std::regex uiVsyncTaskPattern_ = std::regex("\\[(\\w+):(\\d+)\\]");
const std::regex transFlagPattern_ = std::regex(R"(transactionFlag:\[(\d+),(\d+)\])");
const std::regex newTransFlagPattern_ =
- std::regex(R"(transactionFlag:\[(\d+),\s*(\d+),\s*(\d+)\],\s*timestamp:(\d+))");
+ std::regex(R"(transactionFlag:\[(\d+),(\d+)\],\s*tid:(\d+),\s*timestamp:(\d+))");
const std::regex mainProcessCmdPattern_ = std::regex("\\[(\\d+),(\\d+)\\]");
const std::regex distributeMatcher_ = std::regex(R"(H:\[([a-z0-9]+),([a-z0-9]+),([a-z0-9]+)\]#([CS]?)##(.*))");
std::vector frameCallIds_ = {};
--
Gitee
From 914ee178f803f8964412087a5a2289f988b561b1 Mon Sep 17 00:00:00 2001
From: zhangzhuozhou
Date: Thu, 29 May 2025 10:41:23 +0800
Subject: [PATCH 23/47] =?UTF-8?q?feat:=E9=80=82=E9=85=8Draw=20trace?=
=?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8F=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: zhangzhuozhou
---
.../rawtrace_parser/ftrace_event_processor.cpp | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.cpp b/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.cpp
index 5e83ac8c5..1c8e16780 100644
--- a/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.cpp
+++ b/trace_streamer/src/parser/rawtrace_parser/ftrace_event_processor.cpp
@@ -299,11 +299,12 @@ bool FtraceEventProcessor::SchedWakeup(FtraceEvent &ftraceEvent, uint8_t data[],
schedWakeupMsg->set_pid(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
if (format.fields[index].size == NEW_SCHED_PRIO_SIZE) {
schedWakeupMsg->set_prio(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ schedWakeupMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
} else {
schedWakeupMsg->set_prio(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ schedWakeupMsg->set_success(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ schedWakeupMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
}
- schedWakeupMsg->set_success(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
- schedWakeupMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
return true;
}
bool FtraceEventProcessor::SchedWaking(FtraceEvent &ftraceEvent, uint8_t data[], size_t size, const EventFormat &format)
@@ -314,11 +315,12 @@ bool FtraceEventProcessor::SchedWaking(FtraceEvent &ftraceEvent, uint8_t data[],
schedWakingMsg->set_pid(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
if (format.fields[index].size == NEW_SCHED_PRIO_SIZE) {
schedWakingMsg->set_prio(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ schedWakingMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
} else {
schedWakingMsg->set_prio(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ schedWakingMsg->set_success(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ schedWakingMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
}
- schedWakingMsg->set_success(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
- schedWakingMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
return true;
}
bool FtraceEventProcessor::SchedWakeupNew(FtraceEvent &ftraceEvent,
@@ -332,11 +334,12 @@ bool FtraceEventProcessor::SchedWakeupNew(FtraceEvent &ftraceEvent,
wakeupNewMsg->set_pid(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
if (format.fields[index].size == NEW_SCHED_PRIO_SIZE) {
wakeupNewMsg->set_prio(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ wakeupNewMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
} else {
wakeupNewMsg->set_prio(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ wakeupNewMsg->set_success(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
+ wakeupNewMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
}
- wakeupNewMsg->set_success(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
- wakeupNewMsg->set_target_cpu(FtraceFieldProcessor::HandleIntField(format.fields, index++, data, size));
return true;
}
bool FtraceEventProcessor::SchedProcessExit(FtraceEvent &ftraceEvent,
--
Gitee
From f1885ecac20ee829881f927d0c7528b9fa64dfd9 Mon Sep 17 00:00:00 2001
From: JustinYT
Date: Thu, 29 May 2025 17:23:14 +0800
Subject: [PATCH 24/47] fix hiviewdfx_faultloggerd build.
Signed-off-by: JustinYT
---
.../patch_hiperf/hiviewdfx_faultloggerd.patch | 76 +++++++++++++++++--
1 file changed, 71 insertions(+), 5 deletions(-)
diff --git a/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_faultloggerd.patch b/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_faultloggerd.patch
index 088df2a36..42e2c46b8 100644
--- a/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_faultloggerd.patch
+++ b/trace_streamer/prebuilts/patch_hiperf/hiviewdfx_faultloggerd.patch
@@ -1,5 +1,21 @@
+diff --git a/common/dfxutil/dfx_util.cpp b/common/dfxutil/dfx_util.cpp
+index a90f4303..9429fd43 100644
+--- a/common/dfxutil/dfx_util.cpp
++++ b/common/dfxutil/dfx_util.cpp
+@@ -229,7 +229,11 @@ bool ReadFdToString(int fd, std::string& content)
+ void CloseFd(int &fd)
+ {
+ if (fd > 0) {
++#if is_ohos
+ fdsan_close_with_tag(fd, fdsan_create_owner_tag(FDSAN_OWNER_TYPE_FILE, LOG_DOMAIN));
++#else
++ close(fd);
++#endif
+ fd = -1;
+ }
+ }
diff --git a/common/dfxutil/string_view_util.h b/common/dfxutil/string_view_util.h
-index b44a59ea775b368b93391ce19b440f617c309477..7dbd3568df9035edea91e920bf12fa5c58fe116f 100644
+index b44a59ea..7dbd3568 100644
--- a/common/dfxutil/string_view_util.h
+++ b/common/dfxutil/string_view_util.h
@@ -24,6 +24,24 @@
@@ -106,7 +122,7 @@ index b44a59ea775b368b93391ce19b440f617c309477..7dbd3568df9035edea91e920bf12fa5c
} // namespace HiviewDFX
} // namespace OHOS
diff --git a/interfaces/common/byte_order.h b/interfaces/common/byte_order.h
-index 3c40993ec56288deec6e40420a97d182587e9b62..a55d9db076a6fe1476a52a102fb968adb08073d7 100644
+index 3c40993e..a55d9db0 100644
--- a/interfaces/common/byte_order.h
+++ b/interfaces/common/byte_order.h
@@ -16,7 +16,7 @@
@@ -119,7 +135,7 @@ index 3c40993ec56288deec6e40420a97d182587e9b62..a55d9db076a6fe1476a52a102fb968ad
#define UNWIND_BIG_ENDIAN 4321
#define UNWIND_BYTE_ORDER -1 // Unknown
diff --git a/interfaces/innerkits/unwinder/include/dfx_elf_define.h b/interfaces/innerkits/unwinder/include/dfx_elf_define.h
-index 6bc9394912c193417cbfe588551b07c255fce62a..a71d76b5641ec347f014736173137cf1115c446b 100644
+index 6bc93949..a71d76b5 100644
--- a/interfaces/innerkits/unwinder/include/dfx_elf_define.h
+++ b/interfaces/innerkits/unwinder/include/dfx_elf_define.h
@@ -17,7 +17,7 @@
@@ -132,7 +148,7 @@ index 6bc9394912c193417cbfe588551b07c255fce62a..a71d76b5641ec347f014736173137cf1
#include
#endif
diff --git a/interfaces/innerkits/unwinder/include/dfx_elf_parser.h b/interfaces/innerkits/unwinder/include/dfx_elf_parser.h
-index b4c84437735176d28f7756930a8027152fc08155..86a4bdd197918e6246edf683eec2d213b1414803 100644
+index b4c84437..86a4bdd1 100644
--- a/interfaces/innerkits/unwinder/include/dfx_elf_parser.h
+++ b/interfaces/innerkits/unwinder/include/dfx_elf_parser.h
@@ -16,7 +16,7 @@
@@ -145,7 +161,7 @@ index b4c84437735176d28f7756930a8027152fc08155..86a4bdd197918e6246edf683eec2d213
#else
#include
diff --git a/interfaces/innerkits/unwinder/src/elf/dfx_elf.cpp b/interfaces/innerkits/unwinder/src/elf/dfx_elf.cpp
-index 9398e59acea6722bb1bfebcd0f312ee826a6f5a1..d071f2b934610fb15a921972a9eb97f3c646506f 100644
+index 9398e59a..d071f2b9 100644
--- a/interfaces/innerkits/unwinder/src/elf/dfx_elf.cpp
+++ b/interfaces/innerkits/unwinder/src/elf/dfx_elf.cpp
@@ -20,7 +20,7 @@
@@ -157,3 +173,53 @@ index 9398e59acea6722bb1bfebcd0f312ee826a6f5a1..d071f2b934610fb15a921972a9eb97f3
#include "dfx_nonlinux_define.h"
#else
#include
+diff --git a/interfaces/innerkits/unwinder/src/elf/elf_factory.cpp b/interfaces/innerkits/unwinder/src/elf/elf_factory.cpp
+index cbe67062..52ced531 100644
+--- a/interfaces/innerkits/unwinder/src/elf/elf_factory.cpp
++++ b/interfaces/innerkits/unwinder/src/elf/elf_factory.cpp
+@@ -151,8 +151,10 @@ std::shared_ptr RegularElfFactory::Create()
+ DFXLOGE("Failed to open file: %{public}s, errno(%{public}d)", filePath_.c_str(), errno);
+ return regularElf;
+ }
++#if is_ohos
+ uint64_t ownerTag = fdsan_create_owner_tag(FDSAN_OWNER_TYPE_FILE, LOG_DOMAIN);
+ fdsan_exchange_owner_tag(fd, 0, ownerTag);
++#endif
+ do {
+ auto size = static_cast(GetFileSize(fd));
+ auto mMap = std::make_shared();
+@@ -162,7 +164,11 @@ std::shared_ptr RegularElfFactory::Create()
+ }
+ regularElf->SetMmap(mMap);
+ } while (false);
++#if is_ohos
+ fdsan_close_with_tag(fd, ownerTag);
++#else
++ close(fd);
++#endif
+ return regularElf;
+ }
+
+@@ -215,8 +221,10 @@ std::shared_ptr CompressHapElfFactory::Create()
+ DFXLOGE("Failed to open hap file, errno(%{public}d)", errno);
+ return nullptr;
+ }
++#if is_ohos
+ uint64_t ownerTag = fdsan_create_owner_tag(FDSAN_OWNER_TYPE_FILE, LOG_DOMAIN);
+ fdsan_exchange_owner_tag(fd, 0, ownerTag);
++#endif
+ std::shared_ptr compressHapElf = nullptr;
+ do {
+ size_t elfSize = 0;
+@@ -237,7 +245,11 @@ std::shared_ptr CompressHapElfFactory::Create()
+ break;
+ }
+ } while (false);
++#if is_ohos
+ fdsan_close_with_tag(fd, ownerTag);
++#else
++ close(fd);
++#endif
+ return compressHapElf;
+ }
+
--
Gitee
From c25f27c3a9e665a5fbdbd19011dda43e0f7523c4 Mon Sep 17 00:00:00 2001
From: wangyujie
Date: Thu, 29 May 2025 20:01:43 +0800
Subject: [PATCH 25/47] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=91=8A=E8=AD=A6?=
=?UTF-8?q?=E5=BD=B1=E5=93=8D=E5=BF=AB=E7=85=A7=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: wangyujie
---
ide/src/trace/component/chart/SpChartManager.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ide/src/trace/component/chart/SpChartManager.ts b/ide/src/trace/component/chart/SpChartManager.ts
index 3590d9667..816d1fe34 100644
--- a/ide/src/trace/component/chart/SpChartManager.ts
+++ b/ide/src/trace/component/chart/SpChartManager.ts
@@ -62,7 +62,7 @@ import { SpUserFileChart } from './SpUserPluginChart';
import { SpImportUserPluginsChart } from './SpImportUserPluginsChart';
import { queryDmaFenceIdAndCat } from '../../database/sql/dmaFence.sql';
import { queryAllFuncNames } from '../../database/sql/Func.sql';
-import {SpSnapShotChart} from './spSnapShotChart';
+import { SpSnapShotChart } from './spSnapShotChart';
import { SpRecordTrace } from '../SpRecordTrace';
export class SpChartManager {
@@ -197,7 +197,7 @@ export class SpChartManager {
await this.initCpu(progress);
await this.logChart.init();
await this.spHiSysEvent.init();
- if (SpRecordTrace.snapShotList.length > 0) {
+ if (SpRecordTrace.snapShotList.length > 0 && SpRecordTrace.isSnapShotCapture) {
await this.spSnapShotChart.init();
}
let idAndNameArr = await queryDmaFenceIdAndCat();
--
Gitee
From d77ebda4efd37315a6cc07b2878c5b4ebe647639 Mon Sep 17 00:00:00 2001
From: wangyujie
Date: Fri, 30 May 2025 10:21:29 +0800
Subject: [PATCH 26/47] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E9=9A=94=E5=A4=A9?=
=?UTF-8?q?=E5=AF=BC=E5=85=A5trace=E8=A3=81=E5=89=AA=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: wangyujie