工作手记 关于GetPrivateProfileString函数以及如何即时调试debug以及release版本的程式...

  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即可。
  

转载于:https://www.cnblogs.com/Frodo/archive/2007/05/21/754102.html

### 回答1: getprivateprofilestring函数是一个Windows API函数,用于从INI文件中读取指定的键值对。它可以读取INI文件中的字符串类型的键值对,并将结果存储在指定的缓冲区中。该函数通常用于读取应用程序的配置文件。 ### 回答2: getprivateprofilestring函数是一种在Windows操作系统上使用的系统函数,用于获取指定配置文件(INI文件)中指定节(Section)下指定键(Key)的字符串型(String)值,该函数一般由Win32应用程序使用,主要用途是存储和获取程序的配置信息。 该函数的语法如下: ```C++ DWORD WINAPI GetPrivateProfileString( _In_opt_ LPCTSTR lpAppName, _In_opt_ LPCTSTR lpKeyName, _In_opt_ LPCTSTR lpDefault, _Out_ LPTSTR lpReturnedString, _In_ DWORD nSize, _In_opt_ LPCTSTR lpFileName ); ``` 其中,参数lpAppName、lpKeyName、lpDefault、lpReturnedString和nSize的含义如下: - lpAppName:待获取配置文件中的节名(Section),如果为NULL,则获取所有节下指定键(Key)的值; - lpKeyName: 待获取配置文件中的键名(Key),如果为NULL,则获取指定节(Section)下所有键(Key)的值; - lpDefault:在无法获取指定键(Key)的字符串型(String)值时,返回的默认值; - lpReturnedString:存储获取到的字符串型(String)值的缓冲区; - nSize:用于指定存储获取到的字符串型(String)值的缓冲区的大小; - lpFileName: 指定获取的配置文件(INI文件)的路径和文件名。 当GetPrivateProfileString函数执行成功时,会返回获取到的字符串型(String)值的长度,如果执行失败,则会返回0。在实际使用该函数的过程中,需要注意参数的传递顺序和数据类型的匹配问题,否则会导致程序出错或无法正确获取数据。 总的来说,GetPrivateProfileString函数在程序的开发和维护中有着非常重要的作用,它可以方便地存储和获取程序的配置信息,降低程序开发成本和提高开发效率。 ### 回答3: getprivateprofilestring函数是Windows操作系统提供的一个用于读取INI文件中指定配置项的函数。INI文件是一种配置文件格式,常用于Windows系统中保存程序设置和配置信息。该函数在程序开发中广泛用于读取INI文件中的配置信息,以方便程序根据不同的需求进行不同的操作。 getprivateprofilestring函数函数原型为: DWORD GetPrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName ); 函数参数说明如下: lpAppName:指定要读取的配置项所在的节名,即INI文件中用方括号[]括起来的部分。 lpKeyName:指定要读取的配置项名,即INI文件中节名下面的键值名称。 lpDefault:指定读取失败时的默认值。 lpReturnedString:指定读取结果的缓冲区,即读取到的值将被保存在此处。 nSize:指定读取结果缓冲区大小,以确保结果可以完全存储。 lpFileName:指定要读取的INI文件名,可以包含全路径或仅包含文件名。 函数返回值为读取结果的长度,不包括空字符。 使用getprivateprofilestring函数时,需要注意以下几点: 1. 需要将Windows.h头文件包含在程序中,以便使用该函数。 2. INI文件的编写需要按照一定的格式,即每一个配置项占用一行,格式为“键名=键值”。 3. INI文件的相对路径需要与程序当前所在路径一致,否则需要指定完整的路径信息。 4. 使用该函数时,需要判断读取结果的长度是否超出了指定的缓冲区大小,以避免内存溢出问题。 总之,getprivateprofilestring函数是一个非常方便的INI文件读取工具,在程序开发中经常被使用,可大大简化开发工作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值