1,GetPrivateProfileString函数。
      今天在visual studio 调试程式时,发现GetPrivateProfileString读配置文件中的字符串时,不能取的正确的值,后来把GetPrivateProfileString的lpFileName参数改为绝对路径后正常。
  我当时以为的原因: 调试程式时,我曾经把explorer kill过,后来重新启动了explorer,导致它不能读取到当前的路径,但是我
  把visual studio 重新启动后发现,还是读出来的值和配置文件中的不一样,就consult MSDN发现:GetPrivateProfileString的最后一个参数的用法如下,
  lpFileName
  [in] Pointer to a null-terminated string that specifies the name of the initialization file.
  If this parameter does not contain a full path to the file, the system searches for the file
  in the Windows directory.
  总结: GetPrivateProfileString 和 openfile不一样,openfile如果提供的不是绝对路径,它默认读取的是当前路径下面的文件的,看来有时候还是不能想当然阿。

    2,如何即时调试debug以及release版本的程式
     /DEBUG 选项创建 .exe 文件或 DLL 的调试信息。
    链接器将调试信息放在程序数据库 (PDB) 中。它在后面的程序生成期间更新 PDB。
    为调试创建的 .exe 文件或 DLL 包含相应 PDB 的名称和路径。调试器在您调试程序时读取嵌入的名称并使用 PDB。链接器使用程序的基名称和扩展名 .pdb 命名程序数据库,并嵌入它的创建路径。若要重写该默认值,请设置 /PDB 并指定不同的文件名。 
    编译器的仅限行号 (/Zd) 或 C7 兼容 (/Z7) 选项使编译器将调试信息保留在 .obj 文件中。还可以使用程序数据库 (/Zi) 编译器选项将调试信息存储在 .obj 文件的 PDB 中。链接器首先在写入 .obj 文件的绝对路径中查找对象的 PDB,然后在包含 .obj 文件的目录中查找。不能指定对象的 PDB 文件名或链接器的位置。 The new Visual C++ debugger uses the <project>.PDB file created by the linker directly, and embeds the absolute path to the .PDB in the .EXE or .DLL file. If the debugger can't find the .PDB file at that location or if the path is invalid (if, for example, the project was moved to another computer), the debugger looks for it in the current directory.
    指定 /DEBUG 时暗含 /INCREMENTAL。
    “生成调试信息”(/DEBUG) 选项将 /OPT 选项的默认值从 REF 更改为 NOREF,并从 ICF 更改为 NOICF。
    有关 .PDB 和 .DBG 文件的更多信息,请参见知识库文章 Q121366,INFO: PDB and DBG Files - What They Are and How They Work。可以在 MSDN Library 中或 http://support.microsoft.com 上找到知识库文章。
  2.1 如何在visual studio调试release版本的exe文件。(其实所有的调试就是需要产生调试符号,并在调试器里面能够访问它)
     (1)在 Visual Studio 开发环境中设置此编译器选项
     (2)打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C++ 项目属性。
     (3)单击“C/C++”文件夹。
     (4)单击“常规”属性页。
     (5)修改“调试信息格式”属性。设置为  用于“编辑并继续”的程序数据库(/ZI)
  
  2.2 如何在exe(无论是release还是debug版本的)文件运行时调试它?也就是即时调试(Just-in-time Debugging)。在进行即时调试前,在编译exe文件时必须按照前面2.1所叙述的那样产生一个pdb文件。
     (1)启动调试方法一。打开任务管理器,选中运行的exe文件,右键点击,选择debug菜单。实际上就是任务管理器建立一个"C:\Program Files\Common Files\Microsoft Shared\VS7Debug\vs7jit.exe"的进程,并且传递进程id和 -e 0
     (2)运行regedit,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger的值,例如:"C:\Program Files\Common Files\Microsoft Shared\VS7Debug\vs7jit.exe" -p %ld -e %ld,运行它并且传递进程id即可。
  

posted on 2007-05-21 13:42  Frodo  阅读(2304)  评论(0编辑  收藏  举报