VC++中的运行时出现的错误问题,急,在线!!!!!

hyla1981 2004-08-30 02:16:24
我的程序开始运行的时候正常,可是当运行一段时间后,系统就会出现如下的错误,是很多汇编代码,请问这是什么原因???怎样来调试????我是在DEBUG下运行程序的!!!!
NTDLL! 77f8206b()
WS2_32! 74FB6CCF()
WS2_32! 74fbc3aa()
WININET! 63045574()
...全文
211 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyla1981 2004-08-31
  • 打赏
  • 举报
回复
没有人可以回答我的问题吗?
我晕!!!
hyla1981 2004-08-30
  • 打赏
  • 举报
回复
有一点我的程序十多线程的,但是变量我都进行了线程同步!
hyla1981 2004-08-30
  • 打赏
  • 举报
回复
问题不在这里,如果没有调用InitializeCriticalSection()这个行数,那么程序已开始就会报错误,而不是运行一段时间(可能几个小时)后程序中断而报上面的我写出的错误!!!这是运行时的错误,难道就没有人遇到过吗??????
DentistryDoctor 2004-08-30
  • 打赏
  • 举报
回复
InitializeCriticalSection?
hyla1981 2004-08-30
  • 打赏
  • 举报
回复
没起到关键段作用???可我不知道造成什么冲突了????我想问题不是在这里!!!
flyelf 2004-08-30
  • 打赏
  • 举报
回复
估计这里的::EnterCriticalSection(&db_section);
基本上没有什么作用,没有起到关键段的作用,所以造成冲突了
hyla1981 2004-08-30
  • 打赏
  • 举报
回复
这里附上数据部分代码:
取得一个数据库连接:
CDbInfo* CDbPool::GetDb(int &nRet)
{
int nRetcode = en_Success;
CDbInfo* dbCon = NULL;
::EnterCriticalSection(&db_section);
try
{
/*
POSITION pos,temp;
for(pos=o_list.GetHeadPosition();pos != NULL;)
{
temp = pos;
dbCon = NULL;
//dbCon = DYNAMIC_DOWNCAST(CDbInfo,o_list.GetNext(pos));
dbCon = (CDbInfo*)o_list.GetNext(pos);
if(FAILED(dbCon) || dbCon == NULL)
{
continue;
}
else
{
o_list.RemoveAt(temp);
break;
}
}
*/
try
{
if(!o_list.IsEmpty())
{
dbCon = (CDbInfo*)o_list.RemoveHead();
}
//dbCon = DYNAMIC_DOWNCAST(CDbInfo,o_list.RemoveHead());
if(FAILED(dbCon) ||
dbCon == NULL)
{
if(nCurDbCon < nDbMaxCon)
{
try
{
dbCon = new CDbInfo;
}
catch(...)
{
nRet = en_Err_Memory;
::LeaveCriticalSection(&db_section);
return NULL;
}
dbCon->nState = db_nor;
nRetcode = ConnectDb(dbCon);
//连接成功
if(en_Success == nRetcode)
{
InterlockedIncrement((LONG *)&nCurDbCon);
}
else
{
delete dbCon;
dbCon = NULL;
}

}
else
{
nRetcode = en_Err_busy;//数据库连接已经达到最大值
}
}
}
catch(...)
{
nRetcode = en_Err_Excep;
}
if(en_Success != nRetcode)
{
dbCon = NULL;
}
}
catch(...)
{
nRetcode = en_Err_Excep;
AfxMessageBox("Exception");
}
nRet = nRetcode;
::LeaveCriticalSection(&db_section);
return dbCon;
}

释放一个数据库连接:
int CDbPool::FreeDb(CDbInfo *dbCon)
{
::EnterCriticalSection(&db_section);
try
{
ASSERT(dbCon);
if(dbCon != NULL &&
AfxIsValidAddress(dbCon,sizeof(dbCon)) != 0 &&
!FAILED(dbCon))
{
//坏的数据库,扔掉
if(dbCon->nState == db_bad)
{
delete dbCon;
dbCon = NULL;
InterlockedDecrement((LPLONG)&nCurDbCon);
}
else
{
o_list.AddHead(dbCon);
}
}
}
catch(...)
{
AfxMessageBox("异常错误");
}
::LeaveCriticalSection(&db_section);
return 0;
}

取得文件信息:
int CSmsDbOp::SelectFileInfo(tyFileInfo m_tyFileInfo[], char *szSqlState,int &nSelectCount)
{

HSTMT hStmt;
RETCODE iRetCode;
int nRetcode = 0;
CDbInfo *db_info = NULL;
long lDataLen;
long c_iLen = 250;

int nReadNum = nSelectCount;
nSelectCount = 0;
int nState;//文件状态
int nInsertState;
char szFilePath[_MAX_PATH];//文件路径
long lFileDate;//文件创建时间
DWORD dwInsertReadLen;
DWORD dwFileId = -1;//文件索引
DWORD dwFileLen = 0;//文件总长度
DWORD dwFileReadLen = 0;//当前读取文件长度
int n_num = 0;//已读取的文件条数
int nType;//消息类型-1:话费催缴消息;2-新用户消息;3-大客户消息

hStmt = INVALID_HANDLE_VALUE;

_try
{
db_info = CDbPool::GetInstance()->GetDb(nRetcode);
if(nRetcode != 0 ||
FAILED(db_info))
{
_leave;
}

nRetcode = SQLAllocStmt(db_info->hDBC, &hStmt);
if (nRetcode != SQL_SUCCESS)
{
nRetcode = CDbPool::GetInstance()->HandleODBCError(db_info, 0);
_leave;
}

// 设置参数
//SQLSetStmtOption(hStmt, SQL_BIND_TYPE, iSize);
//SQLSetStmtOption(hStmt, SQL_CONCURRENCY, SQL_CONCUR_READ_ONLY);
//SQLSetStmtOption(hStmt, SQL_CURSOR_TYPE, SQL_CURSOR_KEYSET_DRIVEN);
//SQLSetStmtAttr(hStmt, SQL_ATTR_CURSOR_TYPE,
// (SQLPOINTER)SQL_ATTR_KEYSET_SIZE, 1);
//SQLSetStmtOption(hStmt, SQL_ROWSET_SIZE, MAXSELECT);

//捆绑返回列

/*SQLBindCol(hStmt, 1, SQL_C_LONG, &(m_tyFileInfo[0].iGoodsId), 0, &lDataLen);
SQLBindCol(hStmt, 2, SQL_C_TINYINT, &(m_tyFileInfo[0].byGoodsType), 0, &lDataLen);
*/
//fileid,filepath,filelen,filereadlen,insertreadlen,
//filenum,filedate,readstate,insertstate,msgtype

SQLBindCol(hStmt, 1, SQL_C_LONG, &dwFileId, 0, &lDataLen);
SQLBindCol(hStmt, 2, SQL_C_CHAR, szFilePath, sizeof(szFilePath) + 1, &lDataLen);
SQLBindCol(hStmt, 3, SQL_C_LONG, &dwFileLen, 0, &lDataLen);
SQLBindCol(hStmt, 4, SQL_C_LONG, &dwFileReadLen, 0, &lDataLen);
SQLBindCol(hStmt, 5, SQL_C_LONG, &dwInsertReadLen, 0, &lDataLen);
SQLBindCol(hStmt, 6, SQL_C_LONG, &n_num, 0, &lDataLen);
//SQLBindCol(hStmt, 7, SQL_C_LONG, &lFileDate, 0, &lDataLen);
SQLBindCol(hStmt, 7, SQL_C_LONG, &nState, 0, &lDataLen);
SQLBindCol(hStmt, 8, SQL_C_LONG, &nInsertState, 0, &lDataLen);
SQLBindCol(hStmt, 9, SQL_C_LONG, &nType, 0, &lDataLen);

nRetcode = SQLExecDirect(hStmt, (unsigned char *)szSqlState, SQL_NTS);
if (nRetcode != SQL_SUCCESS )
{
nRetcode = CDbPool::GetInstance()->HandleODBCError(db_info, hStmt);
_leave;
}
nRetcode = SQLFetch(hStmt);
//nRetcode = SQLExtendedFetch(hStmt, SQL_FETCH_NEXT, 1, &nRow, nRowStatus);
int nCurRow = 0;
for(;;)
{
if(nRetcode == SQL_NO_DATA_FOUND)
{
nRetcode = en_Success;
_leave;
}
if(nCurRow > (nReadNum-1))
{
_leave;
}
if (nRetcode == SQL_SUCCESS || nRetcode == SQL_SUCCESS_WITH_INFO)
{
m_tyFileInfo[nCurRow].dwFileId = dwFileId;
strcpy(m_tyFileInfo[nCurRow].szFilePath,szFilePath);
m_tyFileInfo[nCurRow].dwFileLen = dwFileLen;
m_tyFileInfo[nCurRow].dwFileReadLen = dwFileReadLen;
m_tyFileInfo[nCurRow].dwInsertReadLen = dwInsertReadLen;
m_tyFileInfo[nCurRow].n_num = n_num;
//m_tyFileInfo[nCurRow].lFileDate = lFileDate;
m_tyFileInfo[nCurRow].nReadState = nState;
m_tyFileInfo[nCurRow].nInsertState = nInsertState;
m_tyFileInfo[nCurRow].nType = nType;
//AfxMessageBox(szFilePath);

nCurRow++;
nSelectCount = nCurRow;
nRetcode = en_Success;
}
else if (nRetcode == SQL_NO_DATA_FOUND)
{
nSelectCount = nCurRow;
nRetcode = en_Success;
_leave;
}
else
{
nSelectCount = nCurRow;
nRetcode = CDbPool::GetInstance()->HandleODBCError(db_info, hStmt);
_leave;
}
nRetcode = SQLFetch(hStmt);
}
}
_finally
{
if (hStmt != INVALID_HANDLE_VALUE)
{
SQLFreeStmt(hStmt, SQL_DROP);
}
CDbPool::GetInstance()->FreeDb(db_info);
return nRetcode;
}
}
hyla1981 2004-08-30
  • 打赏
  • 举报
回复
这是运行期间出现的错误,问题就是不知道出现哪儿??????异常中断时就显示这几行!!!
athena521 2004-08-30
  • 打赏
  • 举报
回复
代码

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧