小编Tho*_*ler的帖子

WinDbg用于调试和发布版本的不同堆栈跟踪

我根据MSDN正确设置了Windbg .问题是当我在调试模式下获得转储文件时,我可以正确地看到调用堆栈(符号被正确加载).

000000f758b6eac0 00007ffb5be60559 System.Number.StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
000000f758b6eb20 00007ffb5b0cd791 System.Number.ParseInt32(System.String, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)
000000f758b6ec70 00007ffafcc60214 ConsoleApplication1.Program.ConvertToInt(System.String)
000000f758b6ecb0 00007ffafcc60105 ConsoleApplication1.Program.Main()
000000f758b6f030 00007ffb5c3b4113 [GCFrame: 000000f758b6f030] 
Run Code Online (Sandbox Code Playgroud)

当我在发布模式下获取转储文件时,缺少某些信息,特别是在调试模式下可见的方法名称"ConvertToInt".

00000081df98c710 00007ffafcc701e1 ConsoleApplication1.Program.Main() [C:\Written Programs\ConsoleApplication1\ConsoleApplication1\Program.cs @ 29]
00000081df98e6a8 00007ffb5c3eb915 [HelperMethodFrame: 00000081df98e6a8] 
00000081df98e790 00007ffb5be60559 System.Number.StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuffer ByRef, System.Globalization.NumberFormatInfo, Boolean)
00000081df98e7f0 00007ffb5b0cd791 System.Number.ParseInt32(System.String, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)
00000081df98e940 00007ffafcc700e0 ConsoleApplication1.Program.Main() [C:\Written Programs\ConsoleApplication1\ConsoleApplication1\Program.cs @ 23]
Run Code Online (Sandbox Code Playgroud)

我在这里做错了吗?
再加上HelperMethodFrame是什么意思?除了在调试模式下,即使没有程序.pdb文件,我仍然可以正确看到调用堆栈.究竟是什么.pdb文件用于.我已经阅读了定义和所有内容,只需要一个关于它如何与Windbg一起使用的实用答案?

.net debugging windbg

3
推荐指数
1
解决办法
471
查看次数

为访问冲突定义条件断点

如果指针发生访问冲突,我想在WinDbg中设置断点.有没有办法设置断点?

c++ windbg breakpoints access-violation

3
推荐指数
1
解决办法
444
查看次数

查找从基类继承的所有实例

在WinDbg中,我使用!name2ee来查找基类的EEClass和MethodTable.如何查找从该特定类型继承的所有实例?

debugging clr windbg sos

3
推荐指数
1
解决办法
410
查看次数

确定从转储文件中引发异常的线程

让\xe2\x80\x99s 说我的应用程序有两个线程A 和B,每个线程都会抛出异常。~{threadid}s我可以通过使用然后运行来确定哪个线程引发了哪个异常吗!pe

\n

c# multithreading windbg exception sos

3
推荐指数
1
解决办法
1775
查看次数

dt nt有什么区别!_TEB和dt ntdll!_TEB?

我可以使用从任意模块转储类型

dt modulename!type
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我看到了例如

dt nt!_TEB
Run Code Online (Sandbox Code Playgroud)

(并且它有效)虽然模块被调用ntdll:

0:001> lm m nt
start             end                 module name
0:001> lm m ntdll
start             end                 module name
00000000`76e00000 00000000`76fa9000   ntdll      (pdb symbols)          d:\...\ntdll.pdb
Run Code Online (Sandbox Code Playgroud)

如您所见,ntdll不能总是被替换nt.

是否有差异dt nt!type对比dt ntdll!type或可它总是以它的快捷方式的形式使用?我正在寻找一个可靠的答案来源,而不仅仅是"是".

我试过了:

  • 阅读WinDbg的帮助 .hh dt

如果您有一些您想分享的背景知识,可以获得奖励:

  • 有没有其他命令nt可以用来代替ntdll或是这个dt特定的?
  • 还有其他模块有快捷方式吗?
  • 这来自哪里(例如,这种行为有一些历史背景)?

debugging windbg usermode

3
推荐指数
1
解决办法
475
查看次数

计算GCD时的浮点异常(核心转储)

我正在编写一个程序,将分数降低到最低项.这是我的计划:

#include <stdio.h>
int main(){
    int m,x,n,gcd;
    printf("Enter a fraction: ");
    scanf("%d/%d",&n,&m);

    if(m==0)printf("Error");
    else
        for(;;){
           x=m%n;
           if(x==0){
              gcd=n;
              m/=gcd;
              n/=gcd;
              printf("In lowest terms: %d/%d",n,m);
            }else
                m=n;
                n=x;
         }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用Euclid的算法来计算GCD.执行时,它会报告

浮点异常(核心转储)

我的代码出了什么问题?

c floating-point coredump

3
推荐指数
1
解决办法
289
查看次数

如何使用数组镜像图像

我需要镜像图像并像这样显示它:

在此输入图像描述

要像这样显示:

在此输入图像描述

这是我到目前为止的代码,我没有运气:

int Height = TransformedPic.GetLength(0);
int Width = TransformedPic.GetLength(1);

for (int i = 0; i < Height; i++)//loop rows
{
    for (int j = 0; j < Width; j++)//loop columns
    {
        TransformedPic[i, j] = TransformedPic[i, ((2 * Width) - (j + 1))];
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

3
推荐指数
1
解决办法
613
查看次数

在DateTime对象中设置年份

我如何才能更改日期时间对象中的年份?

我需要从excel调用一些日期,如果我调用的日期是在今天日期之前,则将年份设置为2099.

例如:被称为日期:15/11/2010需要设置为15/11/2099

这可行吗?或者最好改变整个日期?

c# datetime

3
推荐指数
2
解决办法
1万
查看次数

python 中是否有 set_value 的替代方案

我收到如下错误:“AttributeError:'DataFrame'对象没有属性'set_value'”。代码在这里给出:

for i in range(0,len(text)):
   textB = TextBlob(text[i])
   sentiment = textB.sentiment.polarity
   new_df.set_value(i,'sentiment', sentiment)
   if sentiment < 0.00 :
       sentimentclass = 'Negative'
       new_df.set_value(i, 'sentimentclass', sentimentclass)
   elif sentiment > 0.00 :
       sentimentclass = 'Positive'
       new_df.set_value(i, 'sentimentclass', sentimentclass)
   else :
       sentimentclass = ' Neutral'
       new_df.set_value(i, 'sentimentclass', sentimentclass)
Run Code Online (Sandbox Code Playgroud)

python dataframe sentiment-analysis pandas

3
推荐指数
1
解决办法
4981
查看次数

and 和 bitand 在 &amp; 和 &amp;&amp; 表示 ref 的情况下

考虑以下代码。对我来说,使用andandbitand显然违反了语义。

#include <iostream>
class C
{
    public:
    void f() and // meaning &&
    {
        std::cout << " f() and\n";
    }

    void f() bitand // meaning &
    {
        std::cout << " f() bitand\n";
    }
};
int main()
{
    C{}.f();
    C c;
    c.f();
}
Run Code Online (Sandbox Code Playgroud)

在 godbolt 上找到它

这是 C++ 规范中的疏忽还是编译器中的错误?

c++ reference logical-operators language-lawyer

3
推荐指数
1
解决办法
69
查看次数