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:
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
|
||||
|
||||
Reference in new issue
Block a user