我正在寻找有关如何有效记录异常及其堆栈跟踪的最佳实践文档(或您的意见).当然,假设一个流行的日志框架,如Log4J,SLF4J,java.util.logging等.
我对你应该记录什么级别的堆栈跟踪的意见特别感兴趣.
我听到几个相互矛盾的意见,例如:
我找到了几篇有趣的文章,但没有一篇涉及这个特定的主题:
这可能意味着这些文章的作者与我有同样的担忧:-)
我对你对这个问题的看法非常感兴趣.
我是Android开发的新手,我开发了一个小应用程序但是我遇到了链接不同活动的问题(即以期望的方式在活动之间导航).我很抱歉问这些问题,但我尝试了谷歌的不同解决方案,但它们都没有为我工作,我仍然不清楚这些概念.
Plz的帮助
我有一些问题:
如何删除堆栈顶部的活动?
如何从活动堆栈中删除所有活动?
具有(Intent.FLAG_ACTIVITY_NO_HISTORY)的Intent(A.this,B.class)不会将活动B添加到堆栈中,但如果我想将活动A添加到堆栈中该怎么办?
有没有办法可以看到活动堆栈的内容(这将有助于我在调用活动时设置适当的标志)?
我有一个活动A(带有3个按钮),我从中调用活动B,我在那里完成了一些用户输入的操作,我想回到活动A,但我想只显示那3个按钮,我该怎么办?这个?(我面临的问题是A中的活动有3个按钮,所以我想通过删除它并创建新意图重新启动它或者使堆栈中的相同条目再次启动,以便根据条件显示1个按钮)
提前致谢.
以下是我的代码,仅来自开源.为什么StackWalk64无法使用release build和debug 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) 我在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) 我的问题:如何将文本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窗口,该窗口没有我需要的所有信息来成功识别问题
提前致谢 :)
我通过反射调用一个方法,它抛出一个异常.
但是当我通过堆栈跟踪时
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) 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) 这是一个非常简单的问题:
当你编译一个java程序时,它被转换为字节代码,因此,错过了.java或.class文件的每个行号(我想是的,可能我错了..).因此,当您打印堆栈跟踪时,它如何设置获取调用堆栈中的所有类名和行号?我想我可能在这里遗漏了一些东西,但我找不到任何与此有关的东西.
快速的问题.当然,堆栈跟踪会提供更多信息,但在某些情况下使用异常本身是一种不好的做法吗?就像刚刚获得"空指针异常"而不是这个巨大的转储东西?如果这没有任何意义,那么两个不同之处是:
(Exception e)
{
print e
}
AND
(Exception e)
{
e.printStackTrace
}
Run Code Online (Sandbox Code Playgroud) 我正在使用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) 是否可以使用生成代码的源映射来获取构建期间预渲染所发出的错误的完整堆栈跟踪?
目前,如果在 期间预渲染页面失败next build,则错误堆栈跟踪输出来自缩小的代码而不是项目的实际源,这使得跟踪错误变得非常困难。
即使productionBrowserSourceMaps启用了 in next.config.js,预渲染似乎仍然会发出带有缩小的堆栈跟踪的错误,这使得查找源非常困难。
我想知道确定程序使用多少堆栈空间的最佳方法是什么,是否有任何技术或工具来生成统计信息,而不是手动计数?
该程序希望分析是代码编写器中的C程序,如果这有所不同.
谢谢
我希望能够将c#中的堆栈跟踪打印到txt文件中,如下所述.请注意以下内容:
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)stack-trace ×13
java ×6
exception ×3
android ×2
c ×2
bytecode ×1
c# ×1
c++ ×1
die ×1
embedded ×1
joptionpane ×1
malloc ×1
next.js ×1
perl ×1
printing ×1
reflection ×1
source-maps ×1
stack ×1
windows ×1