【发布时间】:2020-01-24 04:43:22
【问题描述】:
我正在调试我们公司编写的一些旧 C 代码。函数是这样的--
uint32
ExecuteCommand(wchar_t *dnsName, // IN
wchar_t *dnsUser, // IN
PNameValue *nameValues, // OUT
size_t *valuesSize) // OUT
{
....
为了调试它,我需要检查传递给这个函数的 dnsUser 和 dnsName 的值。我尝试了以下选项 -
Util_Log(L"Printing the userName %S", dnsUser);
Util_Log(L"Printing the userName ", dnsUser);
Util_Log(L"Printing the userName %ls", dnsUser);
Util_Log(L"Printing the userName %lS",dnsUser);
Util_Log 是我们公司使用的专有日志记录 API。但是,以上都不起作用,并且用户名在生成的日志中以某种乱码形式打印出来。我尝试使用 printf 和 wprintf 但没有在日志中打印任何内容--
printf("Printing the userName %S",userName);
wprintf("Printing the userName %lS %S", userName);
补充一下:下面是 SimCfg_Log API 的签名。
void
Util_Log(const wchar_t *fmt, // IN
...) // IN
在方法中打印 wchar_t 参数的正确方法是什么?另外,知道为什么使用 printf 和 wprintf 不会在日志中打印任何内容吗?
【问题讨论】:
-
你用你的调试器检查了
dnsUser中的内容吗? -
是的,当我签入调试器时,dnsUser 是一些有效名称,例如 John、David 等,而不是乱码