SymEnumSourceFiles获得不完整的文件名
SymEnumSourceFiles get incomplete file names
本文关键字:文件名 SymEnumSourceFiles 更新时间:2023-10-16
我正在字符串中使用SymEnumSourceFiles来获取调试模块中的文件名。但是回调函数中作为参数的文件名似乎不完整。例如,名为"c:\program files\test\test.cpp"的文件只在PSOURCEFILE类型参数的FileName部分显示"c:\program-fi",这是非常有线的。这是我的代码:
struct foo
{
static BOOL CALLBACK run( PSOURCEFILE pSourceFile, PVOID UserContext)
{
static TCHAR szFileName[MAX_PATH] = _T("");
if (_tcscmp(szFileName, pSourceFile->FileName))
{
_tcscpy(szFileName, pSourceFile->FileName);
}
return TRUE;
}
};
HANDLE hCurrentProcess = GetCurrentProcess();
SymInitialize(hCurrentProcess, NULL, FALSE);
DWORD64 BaseOfDll = SymLoadModule64(hCurrentProcess,
NULL,
(LPCSTR)_bstr_t(lpszFile),
NULL,0,0);
if(!SymEnumSourceFiles(hCurrentProcess, BaseOfDll, NULL, foo::run, (PVOID)pCallBack))
{
ATLTRACE(_T(__FUNCTION__) _T(" error:0x%xn"), GetLastError());
}
SymUnloadModule64(hCurrentProcess, BaseOfDll);
SymCleanup(hCurrentProcess);
有人能告诉我哪里错了吗?PS。当我简单地用SymEnumLines替换SymEnumSourceFiles并更改回调函数时,我得到的文件名是正确的。
SymEnumSymbols曾经有一个错误,其中符号名称不是以零结尾的,也许这一个是相关的。复制文件名(pSourceFile->FileName[0] = 0;
)后,请尝试将其清零。
尝试ANSI版本的SymEnumSourceFiles。SymEnumSourceFilesW函数中似乎有一个错误。
相关文章:
- 从命令行c++发送文本文件名
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 当Microsoft文档仅包含 C# 示例时,如何查找 C++ 包含文件名
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 在Visual Studio 2019中保存时ReadDirectoryChangesW文件名的问题
- C++:在Windows中浏览名称中带有点的文件名
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 不带预处理器的调用方法/文件的文件名/行号
- 在 C++ 中为文件名添加时间戳
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- 如何将文件名作为参数传入并正确打开?
- 如何在目录及其子文件夹中构建文件名字符串向量?
- 要求用户输入C++输出文件名
- 从Arduino SD卡模块到Array的文件名
- 如何使用打印到 PDF 打印机在 MFC 和 CView 中以编程方式打印而不提示输入文件名?
- C++ 从变量导入文件名
- 从 Makefile 中的 $@ 获取文件名
- VSCode C++调试文件名中包含中文字符的文件时插件损坏
- _CrtSetAllocHook - 空文件名和行号参数