VS单步调试F11想进入一个函数但是跳进另一个函数
下面是我写的两个函数,内容除了名称其他全部一致,VS编译器生成的二进制文件是相同的,所以自动优化掉
一个函数节省内存。当我调试打算F11进入SWITCH_STRU_INIT时,却发现跳到PHYSECTION_STRU_INIT。
有效方法是添加些变量让编译器不再优化两个函数。比如在PHYSECTION_STRU_INIT函数中添加int a = 0。
static void SWITCH_STRU_INIT(UINT8 pDataAddr[], OC_SwitchStru *pSwitchCfgDtStr)
{
UINT8 *pData = NULL;
UINT8 offset = 0;
{
UINT8 *pData = NULL;
UINT8 offset = 0;
if((NULL != pDataAddr)&&(NULL != pSwitchCfgDtStr))
{
pData = pDataAddr;
{
pData = pDataAddr;
/*道岔 ID*/
pSwitchCfgDtStr->wID = OcShortFromChar(&pData[offset]);
offset += 2;
pSwitchCfgDtStr->wID = OcShortFromChar(&pData[offset]);
offset += 2;
/*所属 OC ID */
pSwitchCfgDtStr->InOC_ID = OcShortFromChar(&pData[offset]);
offset += 2;
pSwitchCfgDtStr->InOC_ID = OcShortFromChar(&pData[offset]);
offset += 2;
/*A系道岔模块 ID */
pSwitchCfgDtStr->ModelID_A = pData[offset++];
/*A系转辙机位置*/
pSwitchCfgDtStr->DriveAddr_A = pData[offset++];
pSwitchCfgDtStr->ModelID_A = pData[offset++];
/*A系转辙机位置*/
pSwitchCfgDtStr->DriveAddr_A = pData[offset++];
/*B系道岔模块 ID */
pSwitchCfgDtStr->ModelID_B = pData[offset++];
pSwitchCfgDtStr->ModelID_B = pData[offset++];
/*B系转辙机位置 */
pSwitchCfgDtStr->DriveAddr_B = pData[offset];
}
else
{
/* 无操作 */
}
}
pSwitchCfgDtStr->DriveAddr_B = pData[offset];
}
else
{
/* 无操作 */
}
}
static void PHYSECTION_STRU_INIT(UINT8 pDataAddr[], OC_PhySectionStru *pPhySectionCfgDtStr)
{
UINT8 *pData = NULL;
UINT8 offset = 0;
{
UINT8 *pData = NULL;
UINT8 offset = 0;
if((NULL != pDataAddr)&&(NULL != pPhySectionCfgDtStr))
{
pData = pDataAddr;
{
pData = pDataAddr;
/*物理区段 ID*/
pPhySectionCfgDtStr->wID = OcShortFromChar(&pData[offset]);
offset += 2;
pPhySectionCfgDtStr->wID = OcShortFromChar(&pData[offset]);
offset += 2;
/*所属OC ID*/
pPhySectionCfgDtStr->InOC_ID = OcShortFromChar(&pData[offset]);
offset += 2;
pPhySectionCfgDtStr->InOC_ID = OcShortFromChar(&pData[offset]);
offset += 2;
/*A系物理区段模块 ID*/
pPhySectionCfgDtStr->ModelID_A = pData[offset++];
pPhySectionCfgDtStr->ModelID_A = pData[offset++];
/*A系物理区段位置*/
pPhySectionCfgDtStr->DriveAddr_A = pData[offset++];
pPhySectionCfgDtStr->DriveAddr_A = pData[offset++];
/*B系物理区段模块 ID*/
pPhySectionCfgDtStr->ModelID_B = pData[offset++];
pPhySectionCfgDtStr->ModelID_B = pData[offset++];
/*B系物理区段位置*/
pPhySectionCfgDtStr->DriveAddr_B = pData[offset];
pPhySectionCfgDtStr->DriveAddr_B = pData[offset];
}
else
{
/* 无操作 */
}
}
else
{
/* 无操作 */
}
}