Abd*_*eem 3 c++ assembly templates
我有一个C++文件,它只有模板类的模板方法.我试着用-S选项编译它.
它正在生成.s文件,但它没有任何汇编代码 - 例如:
.section ".text",#alloc,#execinstr
.file "eac_slist.C"
.xstabs ".stab.index","V=9.0;DBG_GEN=5.0.8;dm;cd;backend;ptf;ptx;ptk;ptr/vobs/eam;s;;P;R=5.8<<Sun C++ 5.8 2005/10/13 (ccfe)>>;A=2",60,0,0,0
.xstabs ".stab.index","/vobs/ossrc_3pp/freeware/studio11/SUNWspro/prod/bin/CC -I. -S -xs eac_slist.C",52,0,0,0
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙吗?
只有在实例化该模板的实例时,模板才会转换为代码.除非您实例化它,否则您不会获得模板的任何asm.
但是,您可以要求编译器明确实例化模板的实例:
template class TemplatedClass<char>;
Run Code Online (Sandbox Code Playgroud)
如果将这样的行放入c文件中,您将获得为char模板变体生成的asm .
调试模板代码更新
看起来你真正的问题是 - 如何找到我的程序崩溃的模板代码中的哪一行?
听起来你有一个核心文件,你已经确定了地址,并在该地址查找了程序集,现在想要找出该程序集的含义.
您的计划是单独重新编译模板,并寻找匹配的汇编程序.
您的解决方案无效
您的解决方案不是必需的
我假设您可以复制崩溃(即它不是您正在查看的客户核心文件).
通过-g在每次编译时向gcc的参数添加符号,您将能够计算出程序崩溃的行.
这样做,然后再次崩溃.
我不会说模板调试很容易,但它没有比这更容易.
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |