Visual Assist X使用技巧
限制vax最大使用的cpu核心数为4
reg add "hkcu\software\Whole Tomato" /v MaxConcurrency /t REG_DWORD /d 4 /f
使用PDB Explorer查看Release版pdb中的符号
① 非调试态,查看nico相关的符号 注:通过填写模块的基地址“Base address”的值来计算所有符号的地址
注:windbg调试LambdaTest1.exe并加载其pdb,也可以通过x LambdaTest1!*nico*来查看nico相关的符号
cpp代码如下:
int Nico2Add(int a, int b) { return a + b; } class CNicoClass { public: void NicoFunc(int a, float b) { } };
② 调试态时,查看lambda相关的符号 注:通过点击“Update Base Address From Debugger”来获取模块的基地址,来计算所有符号的地址
注1:目前只能用于查看Release版本的pdb和exe文件
注2:修改代码重新编译后,需要重启vs进程来用PDB Explorer查看pdb和exe文件中符号(应该是PDB Explorer的bug)
注3:搜索时如果找不到符号请勾选所有选项(应该是过滤器的bug)
注4:windbg调试LambdaTest1.exe并加载其pdb,也可以通过x LambdaTest1!*lambda*来查看lambda相关的符号
0:000> x LambdaTest1!*lambda*
013d1240 LambdaTest1!<lambda_b53d8cae67476f0e5f04d9defa3a2e2b>::<lambda_b53d8cae67476f0e5f04d9defa3a2e2b> (int *)
013d1220 LambdaTest1!<lambda_b53d8cae67476f0e5f04d9defa3a2e2b>::operator() (int)
013d1590 LambdaTest1!std::for_each<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int> > >,<lambda_b53d8cae67476f0e5f04d9defa3a2e2b> > (class std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int> > >, class std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int> > >, class main::__l2::<lambda_b53d8cae67476f0e5f04d9defa3a2e2b>)
cpp代码如下:
int total = 0; std::vector<int> some_list = {1,2,3,4,5}; std::for_each(begin(some_list), end(some_list), [&total](int x) { total += x; });
张银奎的SymView(已开源)也是一个不错查看符号的工具
参考
Documentation for Visual Assist
[原创]修复Visual Assist在VS2022 17.7.0中启动就报错