omg*_*i2u 1 c sqlite debugging visual-studio
我正在使用Visual Studio 2008编译sqlite3.当我尝试单步执行任何sqlite3函数(例如sqlite3_open)时,Visual Studio会显示错误的源代码行.它看起来真的错了.该sqlite3_open功能似乎在114,788线上宣布; 当我单步进入时,它将我带到第49,254行.
我试过重建一切.我想我正在以相同的方式编译所有内容(即相同的运行时库,调试信息格式等).
我究竟做错了什么?
编辑:为了编译sqlite3 for Windows,我创建了一个新的"Win32项目",命名为"sqlite3",选择它作为静态库,以及一个空项目.我将"sqlite3.c"添加到新"sqlite3"项目下的"Source Files"文件夹中,将"sqlite3.h"文件添加到"Header files"文件夹中.在此步骤中进行编译产生了sqlite3.lib.
这是传递给cl的命令行:
/Od /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_MBCS" /Gm /EHsc /RTC1 /MTd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TP /errorReport:prompt
我在与"Win32项目"创建的同一解决方案中有一个单独的.exe项目,选择它作为"空项目"和"控制台应用程序".这个项目包括sqlite3.h头文件,作为"附加依赖项",我包括sqlite3.lib.我的代码如下所示:
sqlite3 *pDb;
sqlite3_open("C:\\some.db", &pDb);
Run Code Online (Sandbox Code Playgroud)
单步执行此功能会使我在sqlite3.c中找到错误的源代码行.
Edit2: 这是我下载的sqlite3源代码的链接:http://www.sqlite.org/sqlite-amalgamation-3071100.zip
以下是如何以这种方式构建它的文档(即,只需在项目中编译sqlite3.c):http://www.sqlite.org/amalgamation.html
编辑3:对于它的价值,调试窗口中的调用堆栈似乎遵循正确的代码.正确使用API可以获得正确的结果.看来编译工作,源代码行是错误的.
小智 6
vs2008,vs2010等调试器不能超过65536行.
解决方案1:通过在巨大的文件中移动此部分,在第1 65536行中放入您想要介入的任何函数.移动一章一次,我做了调试gettable和工作(与*pnColumn的小错误)
解决方案2:不再使用vs2kXX,返回vi,emacs等.(哈哈哈......)
解决方案3:在最小的文件中删除这个巨大的文件,按照"在sqliteInt.h中包含pcache.h"等指示.但是那时你将需要管理大约150,000行!...以惊喜为缺失" tcl.h"例如,等等.一件很棒的工作,但社区将为你举起一尊雕像!
相信我,最好的解决方案是#1.
感谢那些给我们SQLite合并的人或团队!
| 归档时间: |
|
| 查看次数: |
643 次 |
| 最近记录: |