我的 RabbitMQ 监听器出现以下故障。我使用 Spring Boot 1.4.1 和 Spring Integration 4.3.3 (带有 spring-boot-starter-amqp 和 spring-integration-amqp)。我还使用 RabbitMQ 3.5.7。
少量消息会在大量流量下随机出现问题(到目前为止,在本地复制它并不走运)。
令我困惑的是,堆栈跟踪并不指向我的应用程序,而只是指向框架。下面我附上完整的堆栈跟踪。这是 spring、rabbitMQ 驱动程序还是服务器中的错误?
2017-05-02 10:38:42.337 [501de2ff-cd24-4c28-8434-48bc942457d9] WARN 1 --- [messageListenerContainer-2] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.
org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:870)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:780)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:700)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:95)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:187)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1187)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:681)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1165)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1149)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1100(SimpleMessageListenerContainer.java:95)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1312)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.messaging.MessageHandlingException: nested exception is java.lang.NullPointerException
at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:96)
at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:89)
at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:109)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116) …Run Code Online (Sandbox Code Playgroud) 当我的 Windows 应用程序崩溃时,我想要一个回溯。Boost stacktrace 看起来很有趣,我在 Linux 中使用过它;但是,我safe_dump_to()在 Windows 中得到的结果为零!
我想我做了一个简单的疏忽,希望有人能提供帮助。
我正在使用带有 ninja 和 CMake 的 MSVS2017 编译器。
我已经构建了使用这些标志构建的 Boost v1.67:
link=static address-model=64 variant=release threading=multi
Run Code Online (Sandbox Code Playgroud)
我运行了测试boost_1_67_0/libs/stacktrace/test/以确保我正确构建了库。
这是我的 CMake 文件,请注意我使用的-DCMAKE_BUILD_TYPE=RelWithDebInfo:
cmake_minimum_required(VERSION 3.0)
set( target_name stacktrace_test)
# boost
set(Boost_USE_STATIC_LIBS ON)
find_package( Boost REQUIRED COMPONENTS date_time filesystem thread
system stacktrace_windbg)
add_executable(${target_name} main.cpp)
set_property(TARGET ${target_name} PROPERTY CXX_STANDARD 14 )
target_compile_definitions(${target_name} PUBLIC
BOOST_ALL_NO_LIB=1 # disable pragama inclusion
BOOST_STACKTRACE_LINK=1
BOOST_STACKTRACE_USE_WINDBG=1
)
target_include_directories(${target_name} SYSTEM PUBLIC
${Boost_INCLUDE_DIRS}
)
target_link_libraries(${target_name}
${Boost_LIBRARIES} # boost
dbgeng …Run Code Online (Sandbox Code Playgroud) 这是我的简单测试代码:
class Scratch {
public static void main(String[] args) {
try {
System.out.println("Line 1");
throw new RuntimeException();
} catch (RuntimeException e) {
e.printStackTrace();
} finally {
System.out.println("Line 2");
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行后我会得到这个:
Line 1
Line 2
java.lang.RuntimeException
at Scratch.main(scratch_4.java:5)
Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)
我以为“finally”代码必须最后执行,但事实并非如此。是什么原因?
我想获取一个EventLog条目,该条目在其Message中有一个堆栈跟踪并将其绑定到GridView.如果我使用Eval("Message")并将其放在标签或<p>中,它会显示,但堆栈跟踪会被一起粉碎.
如果我在TextBox中对它进行评估,它会保留其格式.
有没有办法将此stacktrace值计算为某种文字类型控件并保留格式?
我已经尝试过Server.HtmlEncode(Eval("Message"))但没有成功.
我一直在与我的一项服务中发生的ANR作斗争一段时间了.它很难重现,并且UI似乎在它发生之前就具有完整的功能,100%的时间从来没有任何明显的滞后或冻结.我的服务有一个TimerTask和一些运行的AsyncTask,就是这样.
我在2.2中使用Android Market报告它时得到的堆栈跟踪很难阅读,似乎没有直接引用我的任何代码,只是来自SDK中的类.任何人都可以看看堆栈跟踪,看看你是否可以告诉发生了什么.
打印输出是如此之大,我选择将其发布到pastebin,我希望这不违反规则. http://pastebin.com/KHUD0UHW
这是Logcat日志以及 http://pastebin.com/V5xSey36
在尝试运行单元测试时,我得到以下堆栈跟踪.我甚至不知道从哪里开始寻找(请阅读下面的评论).
我应该从哪里开始,你会怎么做才能解决这个问题?
(请注意,以下堆栈跟踪基本上是我如何从Eclipse获取它,没有任何格式或任何东西:每个大约120个字符的无数行) [我只粘贴了显然问题发生的五行]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'acceptanceChain' defined in class path resource
[.../chain/connector/...xml]: Cannot resolve reference to bean 'xxxCommand' while setting constructor argument with key [0]; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxCommand' defined in class path resource
[.../bl/chain/connector/....xml]: Cannot create inner bean 'yyyDTO#1d95da7' of type [yyyListDTO] while setting bean property 'yyyListDTO'; nested exception
is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'yyyListDTO#1d95da7' defined in class path resource
[zzz.xml]: Unsatisfied dependency expressed …Run Code Online (Sandbox Code Playgroud) 我有一个C#WPF UI应用程序,当我关闭它时,我总是得到一个Windows应用程序崩溃对话框("UIDemo遇到了问题,需要关闭.").
错误报告指示它是一个System.ObjectDisposedException,它指示在已处置对象上调用方法的某个位置.那很好,我明白这一部分.
我很想解决它. 我只是无法在这个混蛋上得到一个堆栈跟踪.
该例外正在逃避以下所有情况:
我必须继续的是Windows发送给MS的错误报告的神秘内容.这些十六进制的内存转储并不是那么有用.
有谁知道我怎么能得到那个痕迹?
运行以下方法时,我不断收到IllegalArgumentException:
public int randomize(ArrayList<Integer> list){
Random rdm = new Random();
int size = list.size();
int chosen = rdm.nextInt(size);
Integer card = list.get(chosen);
list.remove(chosen);
return card;
}
Run Code Online (Sandbox Code Playgroud)
这是StackTrace:
11-22 16:52:16.890: E/AndroidRuntime(24979): FATAL EXCEPTION: main
11-22 16:52:16.890: E/AndroidRuntime(24979): java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.marshall.meadows182.match/edu.marshall.meadows182.match.Match}: java.lang.IllegalArgumentException
11-22 16:52:16.890: E/AndroidRuntime(24979): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1821)
11-22 16:52:16.890: E/AndroidRuntime(24979): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
11-22 16:52:16.890: E/AndroidRuntime(24979): at android.app.ActivityThread.access$1500(ActivityThread.java:132)
11-22 16:52:16.890: E/AndroidRuntime(24979): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
11-22 16:52:16.890: E/AndroidRuntime(24979): at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 16:52:16.890: E/AndroidRuntime(24979): at android.os.Looper.loop(Looper.java:143)
11-22 16:52:16.890: E/AndroidRuntime(24979): at android.app.ActivityThread.main(ActivityThread.java:4263)
11-22 16:52:16.890: …Run Code Online (Sandbox Code Playgroud) 在为Java应用程序获取Thread Dump之后,会显示几个线程快照,如下所示:
Thread t@384
java.lang.Thread.State: RUNNABLE
at xmlpdf.text.Word.allocateArrays(Word.java:205)
at xmlpdf.text.Word.calculateWidth(Word.java:237)
at xmlpdf.text.TextFormatter.format(TextFormatter.java:167)
at xmlpdf.text.TextFormatter.formatToWidthImpl(TextFormatter.java:116)
at xmlpdf.text.TextBlock.formatToWidthImpl(TextBlock.java:71)
at xmlpdf.tables.TextCell.formatToWidthImpl(TextCell.java:45)
at xmlpdf.tables.Cell.formatToWidth(Cell.java:349)
at xmlpdf.tables.Row.assignCellWidths(Row.java:97)
at xmlpdf.tables.Table.layout(Table.java:354)
at xmlpdf.tables.Table.formatRowsToWidth(Table.java:329)
at xmlpdf.tables.Table.formatToWidthImpl(Table.java:373)
at xmlpdf.Block.formatToWidth(Block.java:57)
at xmlpdf.renderer.Page.formatWidthAndHeight(Page.java:200)
at xmlpdf.renderer.Page.addBlockWhichIsNotFooterWholePagesOnly(Page.java:1026)
.....
Run Code Online (Sandbox Code Playgroud)
几个相同的线程(由线程名称标识)处于完全相同的状态.
仅供参考通过JMX进行检查还显示这些线程运行了4个小时.
题:
一个线程如何处于一种RUNNABLE状态但Stack Trace它的状态却显示它正在做某事?
我认为RUNNABLE总是意味着线程可用于处理任何新任务而不是处理任务.
当使用gdb调试汇编程序时,bt会打印调用堆栈.
问题是:
rbp存储在当前函数的寄存器中的值以及先前rbp值的堆栈中的信息来了解?rbp值知道它是哪个函数?(b-2)-g在编译时指定选项时,堆栈库和函数之间的映射是否存储在可执行文件中?(b-3)如何读取该映射数据readelf?哪一部分?stack-trace ×10
java ×4
android ×2
c# ×2
exception ×2
arraylist ×1
asp.net ×1
assembly ×1
backtrace ×1
boost ×1
c++ ×1
cmake ×1
data-binding ×1
eclipse ×1
gdb ×1
gridview ×1
performance ×1
spring ×1
unit-testing ×1
wpf ×1