标签: stack-trace

在Java中使用什么级别的异常堆栈跟踪日志记录?

我正在寻找有关如何有效记录异常及其堆栈跟踪的最佳实践文档(或您的意见).当然,假设一个流行的日志框架,如Log4J,SLF4J,java.util.logging等.

我对你应该记录什么级别的堆栈跟踪的意见特别感兴趣.

我听到几个相互矛盾的意见,例如:

  • 堆栈跟踪应仅在DEBUG级别记录,而ERROR级别应仅包含"人类可读"错误消息
  • 堆栈跟踪应记录在ERROR级别,以便为操作员提供查找异常根本原因所需的最大信息量

我找到了几篇有趣的文章,但没有一篇涉及这个特定的主题:

这可能意味着这些文章的作者与我有同样的担忧:-)

我对你对这个问题的看法非常感兴趣.

java error-handling exception stack-trace

0
推荐指数
1
解决办法
4910
查看次数

android中的Activity堆栈问题

我是Android开发的新手,我开发了一个小应用程序但是我遇到了链接不同活动的问题(即以期望的方式在活动之间导航).我很抱歉问这些问题,但我尝试了谷歌的不同解决方案,但它们都没有为我工作,我仍然不清楚这些概念.

Plz的帮助

我有一些问题:

  1. 如何删除堆栈顶部的活动?

  2. 如何从活动堆栈中删除所有活动?

  3. 具有(Intent.FLAG_ACTIVITY_NO_HISTORY)的Intent(A.this,B.class)不会将活动B添加到堆栈中,但如果我想将活动A添加到堆栈中该怎么办?

  4. 有没有办法可以看到活动堆栈的内容(这将有助于我在调用活动时设置适当的标志)?

  5. 我有一个活动A(带有3个按钮),我从中调用活动B,我在那里完成了一些用户输入的操作,我想回到活动A,但我想只显示那3个按钮,我该怎么办?这个?(我面临的问题是A中的活动有3个按钮,所以我想通过删除它并创建新意图重新启动它或者使堆栈中的相同条目再次启动,以便根据条件显示1个按钮)

提前致谢.

android stack-trace android-intent android-activity

0
推荐指数
1
解决办法
454
查看次数

StackWalk64不适用于发布版本

以下是我的代码,仅来自开源.为什么StackWalk64无法使用release builddebug build without pdbs

头文件

#ifndef STACK_TRACE_H_
#define STACK_TRACE_H_

#include <string>
#include <deque>

struct StackItem {
  std::string m_name;
  std::string m_file;
  int m_line;

  StackItem() : m_line(0) {}
};

class StackTraceImpl;

class StackTrace {
public:
  typedef std::deque<StackItem>         ItemContainer;
  typedef ItemContainer::const_iterator ItemIterator;

  ItemContainer   m_items;
  StackTraceImpl *m_impl;
public:

  StackTrace();
  virtual ~StackTrace();
  void print() const;

  void popFront() { 
    m_items.pop_front(); 
  }
  ItemIterator begin() const { 
    return m_items.begin(); 
  }
  ItemIterator end() const { 
    return m_items.end(); 
  }

};

#endif
Run Code Online (Sandbox Code Playgroud)

CPP文件

#include <windows.h>
#include <DbgHelp.h> …
Run Code Online (Sandbox Code Playgroud)

c++ windows stack-trace

0
推荐指数
1
解决办法
2150
查看次数

malloc()中的分段错误?

我在malloc()例程中遇到了分段错误.这是来自gdb的stacktrace:

#0  0x00007ffff787e882 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff787fec6 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff7882a45 in malloc () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x0000000000403ab0 in xmalloc (size=1024) at global.c:14
#4  0x00000000004020fb in processConnectionQueue (arguments=0x60a4e0)
    at connection.c:117
#5  0x00007ffff7bc4e9a in start_thread ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
#6  0x00007ffff78f24bd in clone () from /lib/x86_64-linux-gnu/libc.so.6
#7  0x0000000000000000 in ?? ()
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?什么可能导致malloc()段错误?

编辑:这是来自xmalloc()的代码.它非常标准,正如你可以从stacktrace中看到它调用大小为1024的malloc.

void* xmalloc(size_t size)
{
    void* result = malloc(size);
    if(!result)
    {
        if(!size)
        {
            result = malloc(1);
        }
        if(!result)
        {
            fprintf(stderr, "Error allocating memory of …
Run Code Online (Sandbox Code Playgroud)

c malloc stack-trace segmentation-fault

0
推荐指数
1
解决办法
651
查看次数

在JOptionPane中打印堆栈跟踪

我的问题:如何将文本e.printStackTrace打印到JOptionPane窗口

我的代码目前如下:
原谅糟糕的格式:P

try {
  //SOME CODE
} catch (Exception e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null,
     "An unexpected error has occurred:\n" + e.getMessage() + '\n' + Thread.currentThread().getStackTrace() +  "\nPlease send this error to ." + email + "\nThanks for your help.",
     "Error", JOptionPane.ERROR_MESSAGE);
}
Run Code Online (Sandbox Code Playgroud)

这两个都在命令行界面打印堆栈跟踪(我正在使用终端),它创建一个JOptionPane,但没有与e.printStackTrace()相同的信息.当从jar文件运行我的程序时,命令行界面将不可见,因此用户将只获得JOptionPane窗口,该窗口没有我需要的所有信息来成功识别问题

提前致谢 :)

java printing error-handling stack-trace joptionpane

0
推荐指数
1
解决办法
3397
查看次数

Java中Reflected方法的异常堆栈跟踪

我通过反射调用一个方法,它抛出一个异常.

但是当我通过堆栈跟踪时

StackTraceElement[] elements = Thread.currentThread().getStackTrace();
Run Code Online (Sandbox Code Playgroud)

我没有得到整个堆栈跟踪到反射方法.它只获得堆栈跟踪uptil我实现反射的方法.

反映的课程完全在一个不同的项目中.

编辑:添加代码段

项目A.

Class ReflectionImpl {

   public void callMethodsviaReflection{
     try{
              // Reflection code to call the method

         }catch(InvocationTargetException iTE){

           StringBuilder errorLogBuilder = new StringBuilder();
            errorLogBuilder.append(ex.toString());
            errorLogBuilder.append("\n");

            StackTraceElement[] elements = Thread.currentThread().getStackTrace();

             for (int i=0;i<elements.length;i++) {

                 errorLogBuilder.append((elements[i].toString()));
                 errorLogBuilder.append("\n");
             }

            System.out.println(errorLogBuilder.toString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

项目B - > 参考Eclipse中的项目A.

Class ReflectedClass{

 List<String> nameList = null;

 public void reflectedMethod(){

     nameList.add("Hello");
    }      
}
Run Code Online (Sandbox Code Playgroud)

java reflection stack-trace

0
推荐指数
1
解决办法
517
查看次数

为什么 Carp verbose 不产生堆栈跟踪?

use Carp qw(verbose);为什么make不die产生堆栈跟踪?我的意思是只是

./test.pl 第 8 行出现错误。

已打印,但我还想要一个堆栈跟踪。

#!/usr/bin/perl

use strict;
use warnings;

use Carp qw(verbose);

sub c { die "ERROR"; }

sub b {
  c;
}

sub a {
  b;
}

a;
Run Code Online (Sandbox Code Playgroud)

perl exception stack-trace die

0
推荐指数
1
解决办法
453
查看次数

编译程序时如何打印堆栈跟踪?

这是一个非常简单的问题:

当你编译一个java程序时,它被转换为字节代码,因此,错过了.java或.class文件的每个行号(我想是的,可能我错了..).因此,当您打印堆栈跟踪时,它如何设置获取调用堆栈中的所有类名和行号?我想我可能在这里遗漏了一些东西,但我找不到任何与此有关的东西.

java compiler-construction bytecode stack-trace

0
推荐指数
2
解决办法
153
查看次数

打印堆栈跟踪与异常本身

快速的问题.当然,堆栈跟踪会提供更多信息,但在某些情况下使用异常本身是一种不好的做法吗?就像刚刚获得"空指针异常"而不是这个巨大的转储东西?如果这没有任何意义,那么两个不同之处是:

(Exception e)
{
  print e
}

AND

(Exception e)
{
  e.printStackTrace
}
Run Code Online (Sandbox Code Playgroud)

java exception stack-trace

0
推荐指数
1
解决办法
525
查看次数

调用onResponse时应用程序崩溃

我正在使用volley来加载JSON数据.

这是MainActivity

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    private final String TAG = "MainActivity";


    //Creating a list of posts
    private List<PostItems> mPostItemsList;

    //Creating Views
    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "Device rotated and onCreate called");

        //Initializing Views
        recyclerView = (RecyclerView) findViewById(R.id.post_recycler);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);


        //Initializing the postlist
        mPostItemsList = new ArrayList<>();
        adapter = new PostAdapter(mPostItemsList, this);

        recyclerView.setAdapter(adapter);

        if (NetworkCheck.isAvailableAndConnected(this)) {
            //Caling method to get …
Run Code Online (Sandbox Code Playgroud)

java android stack-trace

0
推荐指数
1
解决办法
560
查看次数

Next.js:在构建/预渲染期间使用源映射来查找错误

是否可以使用生成代码的源映射来获取构建期间预渲染所发出的错误的完整堆栈跟踪?

目前,如果在 期间预渲染页面失败next build,则错误堆栈跟踪输出来自缩小的代码而不是项目的实际源,这使得跟踪错误变得非常困难。

即使productionBrowserSourceMaps启用了 in next.config.js,预渲染似乎仍然会发出带有缩小的堆栈跟踪的错误,这使得查找源非常困难。

stack-trace source-maps next.js

0
推荐指数
1
解决办法
1155
查看次数

如何确定嵌入式程序使用的堆栈空间大小

我想知道确定程序使用多少堆栈空间的最佳方法是什么,是否有任何技术或工具来生成统计信息,而不是手动计数?

该程序希望分析是代码编写器中的C程序,如果这有所不同.

谢谢

c embedded stack stack-trace

-1
推荐指数
1
解决办法
152
查看次数

想要将StackTrace打印到txt文件中C#

我希望能够将c#中的堆栈跟踪打印到txt文件中,如下所述.请注意以下内容:

  1. 我知道Ex.Message不会得到堆栈跟踪.我想使用FileHandler将StackTrace消息写入文本文件.
  2. FileHandler类内部代码并不重要.我想知道如何获取此处捕获的异常的堆栈跟踪.

    try
    
    {
    
    //some code
    
    }
    
    // I just inherit from exception class (the message member, nothing big here)
    
    catch (CustomException ex) 
    {
    
    //I want to write the stacktrace here instead of the ex.Message
    
    FileHandler.Write("DeveloperErrors.txt", "Stack Trace" + ex.Message, System.IO.FileMode.Append);
    }
    
    Run Code Online (Sandbox Code Playgroud)

c# stack-trace file-handling

-2
推荐指数
1
解决办法
2269
查看次数