可可西

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(已开源)也是一个不错查看符号的工具

 

参考

Whole Tomato官网

Documentation for Visual Assist

Features in Visual Assist

Visual Assist 特性和技巧 (2017)

[原创]修复Visual Assist在VS2022 17.7.0中启动就报错

The 'VaMenuPackage' package did not load correctly.

The 'VaMenuPackage' package did not load correctly.(2)

posted on 2024-02-17 10:00  可可西  阅读(65)  评论(0编辑  收藏  举报

导航