fix: 计数器改用 NDEBUG 判断构建类型(本仓库把 _DEBUG 剥掉了)

现象:Debug 构建的 R230 里 ENVIPERFDUMP 报"未知命令",计数器也永远不生效。

根因:cmakelists.txt 第 23~24 行会把 /D_DEBUG 从 CMAKE_CXX_FLAGS_DEBUG 里正则剥掉,
所以即使 --config Debug 编译,_DEBUG 也没有定义。于是 Phase 0 里用
`#if defined(_DEBUG)` 包住的命令注册和 Enabled() 判定整块被编掉——
已用二进制验证:修复前 arx 里查不到 ENVIPERFDUMP,修复后能查到(UTF-16 字符串)。

修复:改用 NDEBUG。cmakelists.txt 只对 Release 定义 NDEBUG
(`$<$<CONFIG:Release>:NDEBUG>`),所以 `#ifndef NDEBUG` 正好等价于"Debug 构建"。

- CoreLibrary/SectionPerfCounter.cpp:计数器启用条件
- CoreCommand/EarthWorm.cpp:ENVIPERFDUMP / ENVIPERFRESET 的函数定义与命令注册

验证:R230 Debug 两个 target 重新编译通过,产物已部署;
脚本自动开图后 ENVIPERFDUMP 正常输出(数据已记录到计划文档 Phase 0 实测结果)。
已知风险:`#ifdef _DEBUG` 在本仓库本来就不生效,rxdebug.cpp 等历史代码同样如此,
本次只修自己新增的两处,没有动别处。
This commit is contained in:
company-desktop committed 2026-10-28 19:52:18 +08:00
1 parent 6c090b5636
commit 3f387485fd
2 files changed
+3 -3

No files matched your search

@@ -544,7 +544,7 @@ KTDocReactor *g_pDocReactor(NULL);
#define ADD_CMD(cmd, func) CoreTools::AddCommand(_T("KTEARTHWORMCORE"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func)
#define ADD_CMD_EX(cmd, func, flag) CoreTools::AddCommand(_T("KTEARTHWORMCORE"), _T(#cmd), _T(#cmd), flag, func)
#if defined(_DEBUG)
#ifndef NDEBUG
// Phase 0:截面恢复计数器。实现见 CoreLibrary/SectionPerfCounter.cpp
void envierpf_dump()
{
@@ -1081,7 +1081,7 @@ void InitApplication()
void pzjcs();
ADD_CMD(co_pzjcs, pzjcs);
#if defined(_DEBUG)
#ifndef NDEBUG
// Phase 0:截面恢复计数器(仅 Debug,且需启动前设 AEC_PERF_COUNTER=1)
ADD_CMD(ENVIPERFDUMP, envierpf_dump);
ADD_CMD(ENVIPERFRESET, envierpf_reset);
@@ -60,7 +60,7 @@ namespace
if (!s_stats.bInited)
{
s_stats.bInited = true;
#if defined(_DEBUG)
#ifndef NDEBUG
const char* psz = ::getenv("AEC_PERF_COUNTER");
s_stats.bEnabled = (psz != NULL && psz[0] != '\0' && psz[0] != '0');
#else